{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Week02.ipynb","provenance":[],"authorship_tag":"ABX9TyP4V7atONbTuADBGUHbuQLd"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# 第二週上課內容"],"metadata":{"id":"9xoK4OIjIfZA"}},{"cell_type":"markdown","source":["###Textbook\n","\n","**C Primer Plus** by Stephen Prata\n","\n","可以清大圖書館找到電子版\n","[NTHU Library Ebook](https://nthu.primo.exlibrisgroup.com/discovery/fulldisplay?docid=alma990010257450206774&context=L&vid=886UST_NTHU:886UST_NTHU&lang=zh-tw&search_scope=MyInst_and_CI&adaptor=Local%20Search%20Engine&isFrbr=true&tab=Everything&query=any%2Ccontains%2Cc%20primer%20plus&sortby=date_d&facet=frbrgroupid%2Cinclude%2C9022689444705798702&offset=0)\n","\n","\n","**中文版** (已絕版）\n","https://www.books.com.tw/products/0010688757\n","\n","依照以前的經驗，即使沒有看教科書，大致上也不會影響學習。只要照著課程進度，熟悉上課教的內容並且充分練習作業，考試應該就不會有太大的問題。\n","\n","上課參考教材：\n","https://github.com/htchen/i2p-nthu/tree/master/程式設計一\n"],"metadata":{"id":"EwmPeLq6T7Cy"}},{"cell_type":"markdown","source":["![image.png](data:image/png;base64,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Fmj47bff9B8WaYB/LYRttWrVQtQDNkMCgROgmA2cGc8gARIgARIggbAnsHHjRm2thbjF5CsIWyypW758+YDHDh/dqlWrBnweTyABfwhQzPpDiWVIgARIgARIIIIJrFq1ynJFyJQpk7bWwmJbsmTJGKlgcYf8+fNLx44dpVOnTjGWZwESCJQAxWygxFieBEiABEiABCKUACy0S5Ys0W4ImEBWoEABLWybN28uhQsX9khl5syZ0rBhQ33s66+/ljfffNNjOWaSQGwJUMzGlhzPIwESIAESIIEIJnDz5k2ZN2+eFrYTJkyQMmXKaGH7+OOPS968eS0yL774ogwbNsza//bbb3XsUyuDGyQQRwIUs3EEyNNJgARIgARIINIJXLt2TWbNmqWF7eTJk6VKlSpa2GJVsnLlysmpU6ecEA0cOFDatm3rlMcdEogtAYrZ2JLjeSRAAiRAAiRAAm4ELl++LH/++acWttOmTfO4jC5Cfg0ZMkQvu+tWATNIIEACFLMBAmNxEiABEiABEiAB/wi0atVKRo4c6bEwBC3cD1q3bu3xODNJwF8CFLP+kmI5EiABEiABEiABvwlcunRJcufO7dEyaypJnjy5jBgxQiB6mUggtgSSx/ZEnkcCJEACJEACJEAC3ghMnTrVp5DFeZhEBsssYtkykUBsCaSM7Yk8jwRIgARIgATiSmDr5ulxrYLnJ1ICgwf0cepZsmQpVCivXJI/TzbJnze7FCyQU4oVySNFixaQQkWuCe8FJ1wRu1M66v6Ax04xGzAynkACJEACJEACJOCLAOLRQqh27dQyWrAWKyx5ChaV1KnT+jqNx0ggVgToMxsrbDyJBEiABEggGARojQsGRdZBAuFDIDaWWfrMhs/150hIgARIgARIgARIIOIIUMxG3CXngEmABEiABEiABEggfAhQzIbPteRISIAESIAESIAESCDiCFDMRtwl54BJgARIgARIgARIIHwIUMyGz7XkSEiABEiABEiABEgg4ghQzEbcJeeASYAESIAESIAESCB8CFDMhs+15EhIgARIgAQigABiuF69ckmuX78WAaON7CHG9lrH9rykSptiNqleOfabBEiABEgg7AkM/HaIPN+6oxzcs80a64rF86Vi5WbS/vXuVl5CbZw8dkgO7dshEE9MwSewdP7cWF3r+L5Hrly+qK/7hXOngj/oWNRIMRsLaDyFBEiABEiABEJB4Jcxf8viZf/I1GnzreYs4ZjAAnLfzs1y70NvyItt+8i1q5et/nEjHggEeK3j+x45dmifPPjou/LEU50FwjahE8VsQl8Btk8CJEACJEACXgi82baJPPJQTXn00cDXq/dSZVCy4eLw1jv95eq16/LFJy9L6jTpglIvK0kaBAoWKyNvv/qw7Ni5Tz7u2S/BO00xm+CXgB0gARIgARIgAc8Enmj5lHz6xQeSI09BzwUSKHfC6N9l/T/bpdWjtaVc5dsTqBdsNiEJPPP8M1K1chkZM2GebN+0LiG7IhSzCYqfjZMACZAACZBA0iKAV9gjfpsradJnkJdfeSrGzl+7dkUuXTwXYzkWSHoEXnn+Qd3pQUMnJmjnUyZo62ycBEiABEiABOJAYNeWf2TM77PU685DcvjYGSleJLdUKFdUWrRsJhkyZXOqee3yRTJ52hLZseuQnDx9QYoUzCllyxSWF156WtKmy+hUFv6gQ76fKOWiCkuTRx6Qn34cJytWb5UrV65L/TqVpPlTD0vmrDnlxNGDMm7sNFm2crOcOXtJShbLK+1fay54DWtP9vqebPWkTBo3QZYs3ySbth2QAnmzKQtXSXn+pWclZcpU9tPkh8HDZfeeI9LhjZaSM28hp2Peds6cOio/fD9GNm7aI8dPntdMGtStLA81a+Z0ir1PDzd7UMaNmSxz56+T0iUKSJdubzmVte9gctG27Xu0+0OO3Pnthzxuf/xhX/nt97mybOEIyZojj8cyMWWuW7FYxoyfJ/sPHJcT6trly51F7qwepZmlSOEuZf6e+Zf8/sci2X/wpKROnVLKlMwv9yoG9zRwdtfwt5y/TDGO7wcNkz17j+prtm3LNpny11LZuHmfRJUqII82rS131Kyjhzt/1nSZOWeNrP93j+TKkUlq16ggz77wjCRLlswjjps3bzjfN/mySzV137Ru84zbfeOxAlvmnL/+lBmzV8mWHQclc8a0UrpkAWnbtoW4Xk/7WA7u3y+/jpkt+/Yfl66dW2qLfJ377pcSxX+XP+eule5nTkimLDlsrYRu0/0OCF3bbIkESIAESIAEYk1g8Hffy3fD/pQrFy8oAZBCcuTIKlu27pY/Zy6XunWqScmy0WL2xo3r0uujvjJyzFw16/6GpEybTjKmTaPLzpizUib9tVz6f9lelb/N6sv+fQf169O7bi8nE6YskXUbtkn27Nnk5MlTsmrtZlm4ZKN826+LPNfmQ9m2bY9kzZpVTp8+Lf/8u0NmL/xH/vjtIylQtLRbffVqV5b1G3fJ+EkLJHW69JImdSrdjznz18ic+evl+yE9nET4nL/Xyco1m6XV0w39ErP/rF4mb3QeKAcOHNZMMmTKIJu37JJpM5bJ/EX/aJcF0ykzxvr3VNEi9u9F0a+Kz57zPZnr7wXR5RrUq2KqitdPCKrPvxljtQGLMJjPX7ReVq/bLgMG9rKOYePTXn1l2M9/6bx0GTPJtevXZc26LXLo8EknMetvuUCYotHZ6pqtXrtFMiqR+OOoOepBKY3cuHFTNm3eJRPVvfTLD8lU//dLj94/6XsxXZrU+hotWLxetitx+VGvd3Xf7f/AGt71vT7u983fq2XO3+tl6JDuTveN/Vz7Nnyde3b/UkarBwOkjJkzy4VzF2Tpin/lz9lrZHDfN6R8lTv0MfxjxlK2TCHp+emv+vuD/MOHj0s59QnhXevOsrJj1AxZtmipNGj0EA6HPNHNIOTI2SAJkAAJkEBcCUybOFG+6j9Oh4Tq1KG5rF4xShYtGKmtf22eaySZMmexmvhp2C/yy+hZkiVLJvm6d1tZs2yULFvym8ya2leqV4mSXbv2S8cugwSWL9eEH/nLV67J3On9ZcmiUTJ5XG/Jly+PsqpulAcf7iAnTpyVn79/T9e3ZP5wqVSxlJw7c0YGDB7nWpXen7tgrfylrFgfv99aVi39VVaofvw09F3JkyeXFkD9vx3h8Tx/MvEq//WOA7SQfeqxerJq+a+yatkY+XV4V8mVO6dMnLpIYIl0TYtWbpXV/+yWr3q9In9N/ELebt/MtYjT/up1O7RQvqvW3U758bVz7vxFKV+2hPw4qLOsXTVWlvw9TLp2aqn7MHveaoHYNAkW3OG/zNQuECMGvyMrl/wq61eO1deo5t3lTTHxt1xsmaIhCOq3X3tE9WGUvtatnmygxWD7jgOl5+e/yUP33yUrF/2k74Fe3V7Qfft96lI5cmC33rb/Y+6bnl2fs+4b3He4b/BwNeC7n+3FvW6P+OEXLWQLFsyrRHUXfX/gu9OsSS05dvS49Oj1k8dz+/QbLw3qVpEpv/fR16FCJUjZ6FSrRjRXvGlIqEQxm1Dk2S4JkAAJkECsCEBgfNZvgj73o3efljZtX5D0GTLrfbzG7vTuG5KnQFG9f/b0cRk0LFrA9e3zsjR65BH12jmtPlaoeJQMH95b8ufPo61mUyf8ofNd/3lLCZL8hUvq7NLlq8gLrRrobfz4d1LCz7w2zp4rn7z1WrQQ/GfTPtdqrP33//eEYGIX+gHL1p216krv7s/p46MmLNILIliFA9gYNGCEHDp0REqVKiI9PuosGTJGC/pqd9WWJvdX1zX9OHKWW42wbL/V7mHthlCsTAWpWS96fG4F/8vYp171FymSL2SvlJ9p1VTGjesnd9epL+nSZ9Ljwuv4clFFdY/Wrb8Vg3fNum1aMFatUFTuuqeefv0ONwRco+defNYakr/lYssUDVUoV0Lfm2g/Vao08m7X9pI3b25t3S9SKLd89kVXPR7cA4+1aK4nU91QIc7Wr/3H6qd9o+ubj8uTrVpY9w3G1KdHa13k1/ELYrxvzik3gCE/TtflO77eTG6vcY/exnfng27t9ZsCTOqD0HdNObJmlG++7SGlylXW1yF3/iJWkQq3VdLbe/YdtfJCvUExG2ribI8ESIAESCBOBDauW6NFW9moYvJI88d91vXP2nX69T9mXUMMuSaElHqiaU2djVfWrilthoxy9z3RP/rmWPWqUXoTr7ubPvGoydafZStEW6mOHjvtlG92YEmDcHFNEJCFC+eXS+fPyYHdO1wP+7W/ePkWXe6lZxpqkWw/qZGyAiLtVULUU6pXP/q4p2P2PLzuPnHqnGTLksGebW1jslePDz6T7u9/av2tWr9TH+/de4iVh+PTJ0+yzvO1AV/h5MlT6CKwnmORhsXzZkuG9Kl13uGjp6zTa9WsrLdhafZkhTYF/S0XF6a17i5rmtOfELRlSuTT2w/dV83Nz7VU8ehj+w+6X6PcuT3fNzXq3qvvm4vnzqmFNaI5OzVq21m7cpX+LhQrVlDub9LYdkT0A8IdlUvovG3b3B/EqqtjEOWeUpbsubSV/PSZhIs367lnnnrLPBIgARIgARJIBAS2bo3+sS0fFfOEqK3b9+sely7hfaJSVOnoemBxdE1VyheRNGnTO2Vnzxk9yaVA3uxuP/BZsufWZS8q1wRPCRPUvCVMBNu796D62y+wkAaa9u47pk/p3G2o4M9TOqj8RiEIjThEmUKF8ku+QtFCxtM59jys+HTz+lXJkimdPdvavnb1iowaN8fat2/AzcGeYJG8v8nD9iyv23/+8Yf88PNM2aom78GSbE83bzqsXfg9165RSeB/+vIbfaVi+SnyXIv68mDTJk7i0d9ysWWKDtVR/tGuKauycCIVK+I+ES5btuhjly9fdT1NTeKDYPQ8MczcN3v27JOipaMfptwqUBlblJ8uEtxqypZ/SG97+mffwej7yH7s7tujH+DseWYbIjdbtsxy5hzFrGHCTxIgARIgARLwSeDg4RP6eLb/hIGvwqdPn9eH06dP47VYxkzRYvXSJXcRkS5ttPXPfnKyZNEvNVOmSGHP1tveBIcp6Kk+c+zatWif3dSp3ds0Zbx9YmLPmTPn9OFqlaOUWPUsfJBvrQ71X2UlfAhs1/ZSporuGxZL8JTwynrxvO+d2vj08+Eyadpi7W+ZLXv0gwDOTZcx2jXEUz0mD31t82JnNeFugyqfSeA+UFJZMAsVzC1r1+/QE9tMWfM5ZGhvGT70J/llzDzZsHG7dHx/uwwZMUP6ff6600NCTOXiwhR9yZDB+SEIeeaqpErlbktMZh1FSeeUXk0i85b8vW/O/ic2YeVFJA9vqWA+92Nlyxb3VlznX1b3Q3YPY/J5UhAPutMMYuWsigRIgARIgASCTaBQgVy6ygMHo0Wtr/pN2cNHbr2Kdi2/b+8RnVW4UHS9rseDuX/23CWv1R06Gu2aULT4LX9Er4VdDiCkVwHFZf/+w/LpJ20F/sD+Jm/C19P5CGEG1wuEIfOWXBd4MEIsV558AYfm2rBqqRaymMA2adznAr9kk45/9q3ZdPqE1fnFV55XPrKtZMaUqdJvyBTZum23dOkxVEaN+sYqG1O5uDC1GgnSRjDum8L/fW+qVy4uX3/zYUA9S57Cu1cqlrOFm0MWFdItoZL33iVUj9guCZAACZAACfggEFUmWuwtVbPwManFV4r6b5IQfB9Pn4gWra7lp6t4m0iItRnfafuuwyoUkruwXjp/ro5CgBBf9sk1gfSnUP5oq+eMmUsCOS3gsjnV6/Cjxz37BAdcWQwn/KXCrCHVrVneScgib8PG3fjwmiBGMeHvp+8/kBRqsh3CZXmKFOCrXKiYeh3Efwe2qjjKcb1viv8nNlev3yWXL0W/sYipXX+OHz24VxfLli2DP8XjpQzFbLxgZaUkQAIkQALxRaBS9bvlNhUCCzFf333vK7fVpf5du0IunD+jm0fMzNurltUTX97r0lcuXjjr1K1xv44WxFdFRIMnn3aezOVUMEg7iEX7/vt9BROlTMLCC72+HK13Wz5Rx80P15SL6bN5s9q6yFD1Sn3rxjVOxdEeFmDYsXmDU35sdsqVLijHjp0QLFgR38lYjTdtifb3NO2N/22MDo9m9s3n6mULPS6tmuw/twv49CL5Wy5UTE3/vX2eVeHe4nrf3Fb9LildqqiKEXtUen7Yz+keRLu4Nwb19+xr7a1fyF+4cLU+XKFs4G8UfNUbyDG6GQRCi2VJgARIgAQSnAD8Uj/u/oI8/WIfmTV3lTRu+obUuL2MiiObXk9yQTD9GZO/kgwls+i+fty9jTz53EdqUYI1ajWvDrpsJjWB6d/Ne7UgQlSCDzo9ZYX3is8BYuGFv9SqT9sf66CCzUfJWRVDdcGSTXLkyDEpWaKwtHmlZaybhxVy1Li/ZfmqTdKsVU9pUKuCFFYhoI4o9wVY4/aphSAqVigu/k318t6NO6qXESw2MW/+SicfVG9n1FBB9XHN0irOgab76leX70dM14tRPNy0rdxVrbQgBNS8hWulaNGCsnu3s8hdslQtZjF4kqDNksXyK3eIC7JKjf365Ut6xTKzMpu/5ULFNCYu2bLF/b7BRK333npC2nT4Vq2ONl8t3rFH7qhaUlKlTCHb1cS6xSu2SLVKJaTt6zH1xvk4Vr9DuqeW+4Q355Lxt0cxG39sWTMJkAAJkEA8EUC818lje8l77w+QZau36dW60BTieCIYfdYctyaxYIb3lPGfSdcPvpOF6gd7zIR5uldYNQwW3l4ftnFa/QsHzUQuY9HTJ/z3j3XMzOaxH1TbyVOm9joBq7KawNSo4e3y6Te/y7BfouPfYiWwRg3vlE96ve0mqI1lMnnyWy9Szbanvv0wrLd81ru/jJm0RP6atcLqGdwXXnz2QSlfKTomKA5Y4/AyWcw62WWjYcPa0rvv7/LHtGVqOdnWLkfddxGxwN+oBa5n33Z7DfmgcwvpO2iyXikNK7xhLO1ebCKZM2eQT7/+zYl1eWUdRPzZJcoFZdHSaMsxHlawKED3Hh2s6v0thxMCYYryZiKXuU7IM8li7iEygSlvPnGOKV/1tmLSsF5V+fzbCX7eN9H3i+s9glBeY4ZnlHe7D9NLEmNZYpMwcbB9u6ZmV3/6GgsKwHVnnnoYwyIMUZWqOp0byp1kaqbgrZgWoWyZbWkCJ0+eVNaELOq1kvusWDuimzdvqnAqN1VokeA/f+AWOHv2rO6Hvc1QbV+5ckXSpPE+U9O1H+iv+YK7Hkvs+8Hu+6VLlzQ7+39+8c3gyJEjatUZ97Ay/ozNn2t9Tk0kyJQpU3wPg/UnEgJbN0+Pc08wAWXH5o0qVmYGKVKynM/6rl65JLu2bZLravZ1iahyaqnR6HBIPk8KwsElf8+R1m0/EywdO3Bwbz3bf/fWjXJFvfYuEVVBB9UPQjNWFVjCd9+OLXLy1CkpULCgWgq3YKzdF6xKbRtvvdlDpk5fKsMGdIxxkQXbabHehI/nnh1b5aZaFrZ0hcoxjgULa2zasE4J3kxqwYtibg8JpiP+lkP5+GZq+uTrE//PBuu+wYIi27dsVv/fZpT8hYr4tRyua9++/qK/DPphirz71lN+Pdi4nu9pv3TU/Z6yfebFq5idP3++bNy40WcHPB0sqL54TZo08XQoZHkXL17UfZ85c6aMHz9eSpYsKc8884ysXLnSax+aN28uZcuW9Xrc0wGIsi1btmiR+vbbb8uAAQPUUom3Zmuac3788UcZMmSILF68WGd9+OGH6rXUEXNYWrZsqV637JZFi27F8bvtttvklVdescp42/jggw9kyZIlMmuW+8ow3s4JVv4Z5QdUvHhxmTx5stSoUcOqFsId4zt48KDs2bNH1qxZo9mD/2uvvSY9evSwymKjYsWKOu+xxx7T+cuWLZMRI0Y4lXHdefzxx6V+/fqu2UHbv3HjhprQcUAWLFggM2bM0Hz/97//SceOHWNs499//5UXX3xRJkyYoCxNeb2WBzvcMw888IDXMjgAhg899JC+fzKrtbhdE+6Vfv36SZ06dVwPOe3/888/UrlyZfW6cp/bffr666/rBy70x1tCP6OiouTrr7/2+EACVrgm6G/+/N7jgqL+UH1HvY2F+cEhEAwxG5yexG8trmI2fluL/9rhX/lwi24SVTy/jB7d1ymGa/y3zhYSA4Hjh/dJ40c7S1oVvu6vqd8F7cEwNmI2KGY+iAv8CCFlz55d5s2bp7d/+ukn/eN555136n1//oGwQ4y9YIpZCL/ff/9dNw/xCGHkzZJ17do1uf3222XDhg36hzlHjhwCAQKRhB/ghQsXOokuM6axY8dqIRuomMX5EG7whzl8+LDco1aamTNnjgpiHR3E29SPpzH8mTRy5Ei54447lM9QUcF2JfXqaMWKFbJp0yYtBiBO9+/f7yRmR40apUWCqcN8Hjt2TGbPni1du3b1aBGDFe755583xYP6+d1330mJEiXk7rvvtuqtVq2arF+/Xu9DyOHhBqLt/vvvFwjvKlWqWGXPnz+v+d13330ycOBAwSeuLcQgOL788svyxRdf6HyIuF9//VWPE0IX7QZbzO7atUuee+45FfR8rxay169f19cWQv3NN98UPPD4k9C3woULS7169fT3Cdfg77//dhPoR48e1eMbM2aMVS3OxbW0p88++0yLSE9CFuVg4YX4jilBqOI6uD5wXb16VX777TfpBc55pAAAQABJREFU37+/zyrwEPKI8us7paxFgwcPls2bo32tzEmffvqplCtXTjAu/NlT6dKlJX369GrSQui/o/Z+cJsESECUNbmitH+xkXz93e/S98uB0vGdN4glgghAj3R8p6+aWHlWfhqqBG2I3nB4QxwUMbtz5041s/GY/rHOkMHZwRuWmK+++kqGDRumxZa3jhQoUEDN1Htfvv/+e/nll1+8FYtV/l133aWeHNJq6xgEDsSjNzGbKlUqGTRokAp2nEELV/xA24VBgwYN5JtvbsWpMx2CeIxNwut1CAGIWViBW7RooR8Mnn766Rira9OmjdStW9eJK/Y//vhj+fLLL7X4sVcC8QAhAMuYa3rhhRe0mIagtidYyCAq4kPMwrLWt29f/aCBh4y5c+fqBwX0ARbJRo0aeb1Opo+wmKN/+GKhDvhSQWiBAUTdW2+9JXiogoBC/p9//qnzYLmNj4SHkGbNmum2zD3duHFj6dSpk9Xck08+KVOnTrX2zUb37t2tcrgv8PCBtwEQtHgAwz3i+rCE+xWi156Pdu0JPH/++WdZtWqVlY17AVZvk44fP67WqB/udM80bdpUqlaN9oG6cOGCdkUBSzwIwC0FyYjjadOmaUspHiYgjO0pXbp01i6+i3jYxX0KYfvtt7fiROJ+QIJgrVmzpnWO2Zg+fbrUqlVLvY4N7XfUtM9PEiABZwKvvNZGT7A6pRamuHr1sjJEpXUuwL2wJbB/1xbJmyebdHvnabmjpu83eqGAEBQxi47CcvTOO+947TNes0JIPfzww25lYAXFDzfEbHwkWJLwhx9ZiNmYEn5wkZYuXRpTUa/HMV6ImJgSmMASCSFmEn60YbmCxRsWt08++UROnDih//A6uEuXLrpo27ZttXiDFRICCgmCBGPE6227BVMfVP9AlEIEQ4zADQRiHeNcvXq1fnVsyplPWMohOuIj9ezZU4uT2rVra7H24IMPaosq2sLYIGo8JTwcGbau4tuUBwe4TUBcHjp0SL+yh18yfJSRB/EGy3awE3yaYck3CQLUNeE+bN26tTz77LPWIYhu+JOadPnyZW0pxYMTrP5IsL7j9T5cM0zCmPD2wC5gIRTtCe4rEMWlSpUSiHgI0qLKoo97zCRYZeGras+z9wf30rZt23RxuGeYhL5A0OJhFePKmTOnOWR9ot6MGW/5JeJhCu4wcCPo06ePLocy+B7Agv2jcqlBQnsQwrDMu6ZgfEdd6+Q+CZBAYATwu/VOlzcDO4mlw4IAFuXo81n8aLbYAAqamPWncfh74jWsa8IPIiyniSFB2A0dOlR3Ba9At2/froUQBAMSLLCexJ3dfxXl8NrcHzEM9wUIGVdLFKxtph784EMcw/qF7QoVKuhjTz31lLVdvXp1baHFjzz8Z5HsAgf7OA9uICiL1/gQKBCQ7du319ZNWNXsCSIQIgU+ksFOa9eu1T6aGBNEJ6ySEO9wJ0CC0PXULkSZXczB0vqHWrPbniC2nnjiCS2UTT5cRCBkP/roI5MluXPntraDtfHDDz9oC7epD/cQRB6s70iwJCMVKVLESUzjutgT3gDY/Z9x/WGthlCGZdLcjxCBYGgszfApHj16tOVvCmE4adIkfR+jfpyPByK7pRj5f/31l7zxxhte3S5g+Ub7xi0D18Dco7h+6N+6deu0SEZ9SHgQwgOD/aHETB6D1dye4NsNTva3HngjAp97uDDZ+QTrO2pvn9skEN8EKqmHtbE/d5fsOZy/6/HdLusngUggEBIxu2PHDsFrbLtFB0KsV69elnjBa1VYGBM6wb3A/EhDTKBf2EfEAUwygijBq3fXBEuhEWI4htnY5hWta1n7PnxC8eetLKyI+IMFEj/iEJ9IsNzBtxeWK7yeh/UOP/iwuJYpU8ay9OLVrRET8GeEYICAhksDfBCR8HSNNmCdNaIL+RBcENnx4WIAyyn6AnEEoQRxZn/1jj55cgWxW7DRR1wX9N2ewB6+nbA6mwRLNfxXt27darL0q25YeYOZ8PBjHtgwLgg63EN4+4DkbzQKiEtY7fGdgKX10UcftbqJPuNNA1KxYsW0z6y5L2C9NQmuP5iUBY4Q93g4gY8xHgBik2BdNW4F5nzch6+++qp+K2NvG8cxVnyfzHVEu3Cjgdg2/cc9gPPxNgL3JK4nEu5DuIpgXPhuwafbuCsE6zuqG+I/JBAiAhkyZhEs9sBEAiQQfAIhEbPwi4PPnz1BJNnFC47BUmZ+5ExZCAKIkNgmvIY1P6b+1AHBij/86MOfEz+qmIxmxCYsg/YECxWsR/iDGITV0ySI+IkTJ5pdt0/4JELEQXQEkiCM8LoZP/IQ2hA76CPENF4pQ7iYBMuceSVr8vAJQWvCgUF0wO8U/TGvku1l/dmGOwR8UuEy4E+CNRoiGT6u6F+3bt30Ns7FNcekPSNeXOvDOSbhtbQ9CoLJh1X63nvvNbta3OIVut3/2ZMLgHXCfxuBjqt3795WFfD9xvmYAIlIFCZ5crUxx8wnhCMeTBDRAPec/b7D9YVARoL7CXxwzT6szyZB1IMxXv1j7LB6oj8QjLCm4gHTJIh91GOYYxIWBHVMCRO24IMOSy++K5i8aRIepOziF/7zeAuAqArw6e7QoYO+X+DLiwcw3BOw3OIP/cX3Fu5Lu3fv1hPnYBnGvRrM76jpKz9JgARIgASSLoGQiFmIQrzetPvjeUKG2eiYmW9PCItlt+jaj/mzjdfyvnx5vdUByyGWHUSCyEPoKFjEkAcBi0/4XWISDYQE/AAhZGFxNj/g+FE2ggA/7HCzwOtjkyDiIGbtE3HMMU+fsIKhXzgHllj4GMKiBXECixcSxopX2++++66nKqw8hFiyv2aHfyR8aO0pENcPuF9g4hx8nzHZKqYEqy/+UBYc8OocogZjwn0CseU6Y97UafhiH+4DdgGJvB49eggmJUJkmYTx4hrY7y9Y+OxuB6as/TPQcZlz8TBk7ju4rcACiU9/mULQIyoCxCUiPtjT559/brlQwDUEER4QBQPJzh5t4UESPPG6H4LYWImxj++WtwQ2rgmuDObBEuNDwkMpvh/wcc6VK5e+HuY88LbHi4VVHbwhXBHZAQ9UeBDD9ce9aP7gS4uHEVx/iFe8lYDLCSztrVq1MtXr70Jcv6NWZdwgARIgARJIsgRCImZBBz9EELSwqtmtR/jRxI8WrE0QJq4J4s8+C9v1eEz7niaPxHQORCOEK2aRYxtCDz6cxjoL8QhLFkQGLJl41WusnPa6YTHEq1MkvHqGn6DZN+UQMgx1+UoIuQW/R/iZwrKIhwOILIQJg5iFG4HxmcQn6oMAgHiA8IEgMMm8pjeuFCbf26cp7+24yce1gxjBdcQr/pdeeskc8voJ6yuE9/Lly/UrZbCBjy6YI5QU9k3kCYg7JPQH4a1gcUaCuLE/ICAPYgi+qzgX4h8WWDNBDv6lsGrDR9NYIXGOtxSbcaEuvCKHmITYBBeIc1iK/X3Fj37Dqg/3Alit8bAEKy2ScV3ANu5NuE6YsUA02xMeuIzVHkzw0IN7Fa/67W8R7Od424Z12YhTI2rBHg8X+IOwhWA23xM89Jny9jpxzSBk0WeETYMrAazVDRs21NcT1woCFw9HeCjBvYC3Hva4s8H6jtr7xW0SIAESIIGkSeCWyglB/2E9wg8iLIAQU/ihxY+gq8CzdwXC0fw42vPjcxuWPrwuxWtXxCVFuDCIC3u0BfjTIryRmdAT2/7A39MIUU91IJIBLI3wq4VPIib44PUrJttA4EGowqpp/GKxDbGCfU9CFAILk4Zat26tuSNMkutkHHs/UJ/r62P7cfv2e++9p2eeQ4DElMAO44JowWt4iFqMBZOQ8AkBCosjrNuwREO0wYcUr8ztC3HA0miElWkT165z5856F+UhhmAlBY9x48ZpK6KxmppzfH0GMi7UA6Z4GII1H28bMOEKD0MQa7C2+pNwX4AFEia4QbBCzEIcg69hbCz+xk8XAtVYtPF6HmIT7i54MMN3Du4kuH8QBxcTBe0+xPZ+QUiaBwCTDzFsHhzgAoHvpkmwnOJ64iEB9zPawEOr3YpuyuIT3ydEc4A7BdxmzDVEv4y1FS4U5q2FXcji/FB+R9EeEwmQAAmQQOIlEFIxazDg9TImL2GyjLfQSqZsqD9haYUfIF6XQ2wjwX8Q1jF7WC/8AEPk2fPwwx2otQvhkhBZAMLUk/iE6MQrXFhm8SAAcYkEkYuEST2w/GEyHRLyMfvb7OtM2z8QgphwY1wK/HlQgOCEJdifZPft9FUeVmb41yLqg/mDVRb8IUAhhkzyxMUcg8UTDx0mcgMWioBvJV6tgwUslbDEgjPqRP0og7batWunX3ebunx9+jsuCEe4xcBXFf7fELNI8GeGJR19icm1AeUhWvEH67KJIgBLJ4S1PeHa4Hra/YMNOzwIQCziHsJ1RrsQnQjNBjGM+xuWflc/Z5R3tfDa2/S2DdcBPKRgoiGEOMSoJ8ssHsjgOwtxj4dB19Bd3uo3+aH+jpp2+UkCJEACJJA4CYRUzCKWJX7k8ZoUCT9ksDj6s/JQqPBBAGBiFaxSJkQX2saPP0SlSbCI4QffnofQV778EM25+EREBPwoQ/zC/xAWMvgSIsF9AUIIfIxI0wf++wcuGxBxSBBIsLZCOCBhoh0eECBYkLD4AiIGQMTCsozX3FgVC5OTIIJh+YIVECIM4hzWOwgNvP5FdAT4XLpO1NMVx/EfiDy4IuCVM8I6gQHuA4wF/YK4xyQhWOxgacY+/rCN62NPsFgbVxQTtgyv1u0PFmAKIWmfkAcfz2Am9BWvyxHyzNXPFe2YyBWBtAk3Elwj3I+wVEMs2hOuGSZy2V1JsI1FDmDxhoUaDzx4IMM9AGsptusqX1Uk3GOu8Yg9CVBdOIZ/8KAFtxaIbiTckxiza4LVF24GaBuWYohZT/e563lmP1TfUdMeP+OXQGyWrozfHrH2UBLAbxbmMsDAYX7XQtk+2woPAiETs3hVDIHhzcoG4WQsSgmJFisM4c814VWx/ZUs3Awgqux5rueYfQgOCHiIMbzaheUUfq04H6+QMekJKzTBzxIJFkX4EuPH3lOC5dKEASuqgt/jdbLZhxiEgDAszatg9AFiAxZlTB6DyIVghUiCWMKqTugjfHghtGHZhW8uxI89eoCn/sQmD23B+g3rKPqB184QrxD0sBRCjMHiivYxBrgYQCxiG6+4fSWIKQgme4IbA+qyx6SFiwJm0AcrQURCcMIH1C4uY1s/rLJgg/sDDxz9+vXTf/b64K8NH2UTmst+DNtTpkzR50LI4kEGsXwhiO0uM67neNuHiMQDAZK3a2B3TcBDlQn/ZuqENRgPY+bNAK4Hrqm5f005X5/x8R311R6PkQAJBJcA3sri/3+IWBgxMHHakwEguK2ytnAmEO9iFtZHvCL39trbDhdrz7uG8LIfT2rbeCUMqyaEFAQhxGv58uW17yPcLIwFDP6bEBkIb4QwXbCkwcfRW4LfIv7gm4lXuxAI4IwJNXiNDEELy6fd4oZthGXatGmT9jfEEzBevaMtiDxMqsLrfogU+JhiH1Y2WKQhmIKdIOgxox4uJxBJ4AHBhglauF8grjF5DwLcl88s+oUxwDUECZY+iEDXyBmYMARBb88Hp2An/KfsT4LPp93KigcK8LAnhFnD5Dg82GByFQS6ayxXjMGbcAYHiEaE5MKDAB56cF/hfsGrfiRYQ8zkMdO2nZHJw6c9koA939s22oOrhD3hgQ1iFG4PGDM4gJm3h1z7udwmARJIugTwcIvfIMxDgcEEk4Xx/zzeIDGRQFwJxLuYhTiFhc/fBIulmcDi7zmhKAefWbt/LwQUrId4ZW9PCI3UqFEjnQXhgdfe8Gv0NckKPpb4UcfkIFioYZmEyDMJE2rwZ8QXJvt07NhRuzRAnGCikREkEC9Y7hb/QcAFAuLBTMKBaEUYJZxr/gOBlRdhqzA5D6+fzWQcWIrxihvB6uPjiRliFuIZQhUTtmBNRX8h3tAX/CfnmiBIEdnBTHYzx5GPBwYkTBTD5DEIcnvCBCy4Urjm28uEchvuCPjP3CREdrAnWFvBHeIeIhf3Hyy0iLuKhxD84V7B9cQ1wp89YTIWHg4hXOFPi+8hfkAgjDGRDJyQEK3BHgMXeRCZnhLuByNOcb1c4/TCXQATE+EKgocrXCtMGjMJD0Z4yEI9eGhDv3DtcG08JTzsYVxwdYFgx/2ChzVvKTbfUW91MZ8ESCDuBGAcgc8/BCz+P8DbWXzf8d3H/xNMJBAsAvEqZvH6ED+crj/UvjqPmx4zzhNDwg8/BAMSZlPjtbRJEJsQqa4JYzbJxH41+94+YZXCmCFi4TvqKkwwwQczvM2kL7g24HUvLJj4z8GeIFwxAQfCGP6SEHDGQgsBA19F+ytmvMY2r3iN3ynqhMUOotGETbK3EYxtWFyN9RnRIuC/ir7D+ggXCQgZCHRYoHEdYFXFuPGKGq/bTUIZ+MbCTQEJYg8WXteEiVDx4S7h2o7rPsZiXD7MMewj8D8WDzAJDOzl4NNsjx6AB0JM1oJ7Bq4phKHxkzZ1mE9wxIMPxCas/hg3HqzwgIJkHk7gjgLRbK6DOR/hwFwfGHB9wNpYULENFw37dwICFfc8XhviewDLvvEDR90QyXXq1JG6yl8X9xf6BbFu9102fUd5vB2AODY+23jwchWzcf2Ooh0mEiCB4BHA7wxcmvBbjvkQ+L5jDgdcioxBJnitsSYSiCaQTPlxRgfwjAMRCB78wOIVAqxssPAlpoTZ67BQ4Ycbk7rgf+nt1WxC9huvgvHHL3xCXgW2TQIkQAIkEAgBuDThTRAELCZBY44J5mXgrWNCGBEC6TvLhgeBoFlm8VoRFkC8NoZwTEwJr1ztrzsTU9/sfYHATowi295HbpMACZAACZAACGAxEwhYTObCmx4IWLiqucaFJi0SiG8CQbHMwn8Ovm9I8IPB68DElODLh1BaSHhNitBPTCRAAiRAAiRAAoERMJEI4AoFiyxcixClx+5SFFiNLE0CcScQFDEb926wBhIgARIgARIggcRIAJOfsQQ2rLBYpQ/+7LDCmonEoegz5hQEwSsyFF1NUm3AwIeHkqSeKGaT+hVk/0mABEiABEggyAQQiQD+rxCwCOWHCCwQsAkViQCii2I2yBdZVRcuXClmg39vsEYSIAESIAESSHIEEIkAEUYgYGfOnKkjnUDAIsJNQk9MDhfRldhuinDhSjGb2O4s9ocESIAESIAEQkQAr5ixAA8ELGLCIhIBfGARxjExRSIIF9EVosvqdzPhwpVi1u9LzoIkQAIkQAIkEB4EEFccAhaxuxGJAAIWq/El1kgE4SK6EtvdEy5cgxaaK7FdIPaHBEiABEiABEjgFgGE0EQYrZEjR+pJP3AhmDNnDiMR3ELErSRKgGI2iV44dpsESIAESIAEYiJgIhFAwGLlyCeffFKvBohlsplIIFwI0M0gXK4kx0ECJEACJEACioCJRAABC3eCpk2b6kgE9evX17HgkyKkcHkdntjYhwtXitnEdmexPyRAAiRAAiQQIAETiQACdtasWQLhCjeCxo0bJ3gkggCH4rF4uIguj4NLwMxw4Uoxm4A3EZsmARIgARIgARCYP3++1K5dW8f99JeIiUQAATtx4kSpXLmyFYkgS5Ys/laTJMqFi+hKbLDDhSvFbGK7s9gfEiABEiCBiCIwe/ZsbUGdPn263HPPPTGOHa4DELBYlStfvnzaApuYIxHEOCA/CoSL6PJjqCEtEi5cOQEspLcNGyMBEiABEiCBWwQWLlyofVovX76sQ2V5E7OIRIBQWvjDSlgtWrSQuXPnSunSpW9Vxi0SiFACtMxG6IXnsEmABEiABBKWwPLly6VBgwZy7tw53ZHs2bMLog+kSpVK7x86dEhbXyFg9+/fL82bN9duBLfffnvCdjwBWg8XC2ICoPPZZLhwpZj1eZl5kARIgARIgASCT2DNmjV6ktbp06edKv/555/l2rVr2gJrIhFgQYN69eol2UgETgOM5U64iK5YDj/eTgsXrhSz8XaLsGISIAESIAEScCewceNGqVu3rhw/ftztIKyyTZo00X6wDz30UFhEInAbZCwywkV0xWLo8XpKuHClmI3X24SVkwAJkAAJkMAtAlu3bpU6depod4Jbube20qdPL0eOHJGMGTPeyuSWjvIAX2Gm4BIIFzGbPLhYWBsJkAAJkAAJkIAnArt27ZJ7773Xq5DFORcvXtRhtjydzzwSIAHPBGiZ9cyFuSRAAiRAAn4S6NqppZ8lI7fYmTMX5LfxC+TEiZMxQihVsog88UjNGMuFY4FPPh/pcVjhYkH0OLgEzAwXrgzNlYA3EZsmARIggXAh4E2EhMv44joOhN56/a3dsnu35z+4Fpi0a/cBebNzX8mVK5fJiohPPhRFxGWOl0FSzMYLVlZKAiRAAiRAArcIpE2bVqKiovTfrdxbW5cuXZI9e/ZYYheTwyJNzN6iwS0SCIwAxWxgvFiaBEiABEiABIJOIF26dD7FbtAbZIUkEEYEOAEsjC4mh0ICJEACJEACkUQAEQ7atWsnP/zwQ1CHPXXqVGnbtq2OLGEqjo92TN2+PgMdIxbbGDNmjFy9etVXtWF1jGI2rC4nB0MCJEACJEACkUPg5s2bMmjQIJkxY0ZQB43V2QYPHiwnT0ZP2IOgjI92/Ol0oGN899135cknn5SxY8f6U31YlKGbQVhcRg6CBEiABEiABEiABEQL2QsXLkjt2rUjBgfFbMRcag6UBEiABEiABEgg3Ak0atRI8BdJiW4GkXS1OVYSIAESIAESCHMChw8flrNnz8Y4SpQ7ffp0jOX8LbB///5Y14fFMhC2DS4F/iS4P5w4ccKfohFRhmI2Ii4zB0kCJEACJEAC4U0Ak55KlSol+fLlkyxZsujX7Pv27XMb9NChQ6VgwYK6XLZs2XQUiYULF7qV8yfj2LFj0rJlS91eoUKFBPUVKVJEhg0b5s/p2q+1TJkykilTJilWrJhexvjhhx+WAwcOeDwfvsG33Xab5MyZU/9hvPPmzXMq26dPH8mRI4fs2LHDKT+cdyhmw/nqcmwkQAIkEIYErl27JleuXAnDkSX8kGAZBNsbN24kfGcC6MGCBQvkxRdflObNm8tnn30mxYsXFwjU1157zamWnj17yssvvyyY0NW1a1d59tlntUW0Xr16sm3bNqeyMe0gFnClSpVk1KhR8thjj8nw4cN12ylSpNB9+eSTT3xW8fHHH+v+gjUEKAQwJm5NnjxZqlatak0+M5WsWLFCmjVrJrfffrtuq0uXLgJrcIMGDWTt2rWmmMBfFpbb69evW3lhv6EuKBMJkAAJkAAJxJpAl45Px/rc2JxYq1Yth/pxdqgfcL9PV0LFoX70HZ9++qnf50RiQSXINNs333wz5MP3dR/hentKSrDp/uL4iBEjrCLqgceROXNmh1qu1aEWpND5ylLpSJMmjaNo0aIOJditsn/88Yeu4/nnn7fyunXrpvP+/fdfnadEvt5XYtkq06ZNG52nwoJZedhQrgu6jfTp0zsOHjzodMzsbN++XfelfPnyjjNnzphs/dm3b19dr7kG9jGqiApOZX/55RddtmnTplb++++/r/M2b95s5Xnb8MbVW/nEmh8Uy2zy5MkF6/vyL2YGYMVEAiRAAiQQewLqB1WfbD79qWnatGkya9YsgTWMyTsBw9R8ei+ZuI4o4aito6ZXKVOm1G4GGIdxNVCiVVudO3fuLKlTpzZF5b777hOcv3r1aivPn41x48aJEqOiRLBTcbg4/O9//xP4wXpzX5gyZYruS/fu3UWJbqfzX331VcmTJ49buDElwrVV2V4YLgkYy+LFi+3ZEbcdFGWFm4V//jOIuLuMAyYBEiCBBCaA18CtW7eWb7/9NmQ9wateBN5/+umnQ9ZmpDYEN4EMGTI4Db969ep6H6ISSVkq9SfEot34BiGLMnv37tXH/fnn6NGjerIX2kBdrgnuB0jeXBe2bNmij8NlwDWlSpVK+/HC59U+IaxChQpubcHXtkaNGgLfXbgXRGpiaK5IvfIcNwmQAAlEEIECBQpoP8NQDhn+jAi8r9wiQtlsRLblKmQBAaLQnoyfNR5qYOV0TWnTpnXN8rp/+fJlfczb21b4zSJ5ErrIN+fDguwp4XzXc7HksaeEcrDOejvu6Zxwy/NMMdxGyfGQAAmQAAmQAAlENIESJUro8ZcuXVree++9OLFANASI3w0bNnisR/na6vyoqCiPxxGFAGndunU6soK9EKyxsNyinxDLZjKecZewl8WStRs3btSRELwJa3v5cN2mmA3XK8txkQAJkEASIQB/Pyy9iR9lxP6EAKhWrZq0b99e+zL6GgZ+9EePHi3zVHgivCrGLPCXXnpJqlSp4nQaXveqiTX6OGa9uybMIIdPJfwmEV4J53fs2FHy5s3rWlTvQ6z8/PPPWszg9TR8J++44w49ix0CA76QePWLhLbNrPq77rpLnnnmGZ3v6x9f9bv6WMaG36FDh+S7776TlStXCl6Z43U3ZtLHlALlFFN9oTxuVsRC9AEs+Wq3fCJmK0Rkrly5/OoShCOiCMD3dfz48fLoo49a56kJZ/LVV19J1qxZnVbhQhQOYy3GuYim8OGHH+p61MQ06/wff/xRh+Zy9cXFErvLli2TO++80yo7ZMgQff1cy1oFImVD+brGOSlWca4jUiogq0i50hwnCUQOAV+z0H1RwCxtNVHGoYSBnn2tfugdSgDobfxfqSxTjvXr17tVUbNmTV0Gs9ezZ8+ut5UAtepRFjPHr7/+6nTezJkzdTkV2sgpH7PeldC02syYMaNVT+7cuR0qHJJTeex8/vnneiY6+oi+q5if1vnorxLY1j7K2P+UkHWrzzUjpvpN+djyU2GsHEqkW/1SMUn1tnrl7XjwwQf1docOHUwz+jM2nJwq8GPH130Ehp6SmelvjzJgyqnJfnos9qgXDzzwgM675557HD/99JPj999/dyhR6cD9oyYJmlMd/kQzQEQCRCwAN/Xg40BUhO+//96hfFt1G8rFxKpPCV59z+DamqRChOlylStX1udNnDhRfx+Ui4FDWZEd6uFMFzVjRL6aXOZQocd0W2+99Za+/5QAdyj/bFOtIxKjGXi+Oywk/m14u8n8OzuySpFVZF1vjpYEIoGALxHia/z9+vXTP+YQsMq6aoVL2rp1qwNiA/9f4odevWZ1qsaIWRy/9957HTt37tTHEeLICASEZVLWNus8b2LWhEEqXLiwQ1l3dflz5845TNglZW216sAG+ol2lY+i4+uvv3agLJKywmpRtGfPHgfEB8JAKSumLqusxXofeSjnK/lTvzk/NvzQXzVTXvdLxVi1+qP8ex1qCVSdj/G5itlAOZk+BvLp6z5CnzwlsFYWVoeyKrsdVnFe9XjsD0QY/wsvvKAFKOrEHx5IcL49jFaPHj30sU2bNul6EZrLUzsI3aUmYOljpj61eIID4tWe1EINuj4IUJPQ9969ezvUJC59DOfjge6pp55yunfNGCHYEa4L4cVQFv3Bd0GtHGaq1J8q/qw+ju9RTAn1hEMKyijCBUYoLihZhYIy2yABEgglAV8ixFs/IDRhZcL/iSpkllsxNUHGofwS9fGRI0c6HTdiFpZbe7xQUwjiAvV+9NFHJsvhSczCmmUswWr1KKssNtRyqFqwoh71Gl8fO3/+vENNJNN1KxcDp/KedpQ/pC6LuLj+pEDqjy0/9Vpb90mFo3LrEuKxqtWo9HG7mA2Uk1vFfmb4uo+C/duJ+wvXB7FYTRxaP7vpsRjul1WrVjmUm4zH48hErGOIYteEPDzoKP9bh3JRcT3sto/+KncYt/i0pqCKoKGvoXnQMvmePoPN1VMbocgLSmguBYOJBEiABEiABPwmoH74RVlSRQlTUdZVt/PgQ/j666/rfPgJekqI5YlZ3K4J4bCQvE3OMeVRrwpwryfaIHSXPSHkUf369XWWCaOEPmOZUWUtllatWtmLB2U7kPpjy2/69Om6r4i16powocmT32ygnFzrTYz7uL8QPgtLyQYSxcDbWHC/wF8b8WG9pZIlSzr56Zpy8N3FimUIvWV8as0xT5/oL3y6XX2nTVn4fWO5W+UyY7LC/pMTwML+EnOAJEACJJD4CBiB6DpRy97TcuXK6V1vsTox6cpTMrPWlfuBp8NWnok7ql7HigmlZB20bSjXAb1nytsn4NiKxXkzkPpjy8+whCD3lIoUKeKWbfrlLye3CpgRrwSU5VOw1C3EtHqLIZgohsmLkZQoZiPpanOsJEACJJBICGBBASRf1iNYu5C8BYM3x3Uh2z8mnqh9hrjtsLV56tQpvY2IBbDQeUvKB1IfMqGR/J3x7q0+b/mB1B8bfsr3UkdYgCVQTZzz2A3M6HdNgXJyPZ/78UsA0TPwgIUHMoTxwoOKJ8t7/PYiYWunmE1Y/mydBEiABCKSgLEA+lp1yVhEvQlNI7JcARqLLF7r+krFihXTh+FOAItWTMkE2t+1a1dMRWN1PJD6Y8MPAfpVhAYdygnuEkak2zurJhPZd/V2oJzcKmBGvBKAawJCdMHqDtcJFbHDbTW0eO1AIqicPrOJ4CKwCyRAAiQQaQSMi4AKhyTHjx/3OHzEnkWqWLGix+Pz58/3mK9Cdul8b+eZk4zYNTFqTb63T+P28Oeff4o3Ie3pXG+WZdeygdQfW37GBUOFgXJtXsdZxdhcU6CcXM/nfvwSQMxbxFZWIbu0L7en1dDitwcJXzvFbMJfA/aABEiABCKOANa0r1Onjp6ApcJgiZrJ78QAgeOnTp2qV0fyFhAeP94I+m9PAwcOFBVHVb9GR72+0t13360n3aiQTILJZAhqb09YxEHFBbWysOAB/vCKH+LBVaRiUpaaQW6VN6/yMRENCzrElAKpP7b8zMQ1FbZKVNgppy6p6A960QinTLUTKCfX87lPAvFOIBghE1Qng1FNRNRBVhFxmTlIEogoAr5CKvkCgRidJjSWesXuaNeunQMxMtXqSDq0EOJpTpo0ya0KE5oLixUgLicWIkDg+4YNG+rzEDcUcT3tyVNoLhyfMWOGFXNUWUZ1fNVOnTo5EFwfQeqV4LZX40AAfuWrq9sxfUaQesRoRdxPE5cUJyE+br58+XRZ9frXgZBJPXv2dKrPdSeQ+mPDD6GfypYtq/uEWLyIuaqWdtXxSk3cUvxO2UNzoY+BcnIdlz/7vu4j/nb6QzDwMuHCNSgqNFxgBH4bBH4GWQXOjGeQAAkkbgK+REhMPUew/saNG1uCEv9HQowqK6WOu+npfLUsqRZjf//9txa+EJ04D39Y/MC+kpM5X4Wk0sefeOIJk2V9qtBTDghZU4f5RDtz5syxypkN5TPr1m7+/PkdyurpUC4Tppj+xKpQEI2mTizGEFMKpP7Y8EPc2EceeURzNv1CoP9BgwY5lEVc9xUrs7mmQDm5nh/Tvq/7CP1kCj6BcOGaDGjUYOKUMDMyCNXEqQ9J5WSySipXiv0kARLwl0DXTi3lk89jnkDlqz5EIMBrb8y4h++oWibUV3GnYypgvY4pC39QRCbwlEaNGiVPP/20vPHGG/LNN994KqLdB5S1U8fvxGQsb3E8zckqeL2gPHwUo6KiTLbbJ9wREN5KLZmq44m6FfCS4W/9OD02/NAvuEAo67GYCWVeuuKUDTeLQDg5nexj5//tnQm8VWP3x1cTShMSKpKSkrFSKCkiL+I1ZSgiU71KhhJFiHhlqv6mXhSRIUOG15ThzVQqlRSVIpHKTKkQ9n/9Vp7dPufsc89wz7n3DL/1+dy7937286z9PN+977nrrL2e9ZT0HPF/ZwngSnGqULgym0EpHgI2JQESIAESyAwBpNGKl/s00RVgdGLxhZLE5WUNm8Hv2iHGVVfrcocJt1WrVpVWrVolrAdjN5l60YqS1Y926fBDvxCnm6qkyilV/axPAqkS4ASwVImxPgmQAAmQQF4RwOQyXX7WVl/S2Na86js7SwIkkJgAPbOJGbEGCZAACZBAnhHQiWMybtw4W/Zz0qRJgtyzxxxzjIUw5NlQ2F0SIIEEBGjMJgDE0yRAAiRAAvlH4OeffxbkUnX5VLt27ZrUwgj5N1L2mARIgMYsnwESIAESIIGCI9C9e3dbbEFn+5t3tn79+gU3Rg6IBEhgIwEas3wSSIAESIAECo4AVkXChLJ0J5UVHBAOiAQKmAAngBXwzeXQSIAESIAESIAESKDQCdAzmwd3GLn3KCSQSQKlzQmayb5QFwmQAAmQAAmUhgCN2dLQK8O2ND7KEHaBX4pfjgr8BnN4JEACJFBkBBhmUGQ3nMMlARIgARIgARIggUIiQM9sId1NjoUESIAEyokAPf4lg1/86VeyZdXNpV69OiVX5FkSIIGUCdCYTRkZG5AACZAACQQJMAwqSCN8/4wzzpBOnTsLthQSIIHMEmCYQWZ5UhsJkAAJkAAJxBBYuXKl7LDDDjHlLCABEig9AXpmS8+QGkiABEiABEigRAI0ZkvEw5NlTGD9+vXy7rvvlvFVs3c5GrPZY0vNJEACJEACJGAEVq1aJdtvvz1pkEC5EHDG65QpUwQ/M2bMkA0bNkitWrXKpT+ZvijDDDJNlPpIgARIgARIIEDg999/lzVr1sg222wTKOUuCZQNgRYtWpjReu2110qFChXkmmuukS5dusg///lP+fbbb8umE1m+Cj2zWQZcnur/+OMP+fPPP2XzzTdP2A18Q/vrr7+SqptQGSuUSACcwbty5cpSqVKlEuvyJAmQQP4TgFd2u+22M0Mi/0fDEeQTAXhkP/74Y/syVb16dfvfc+KJJ9r/n4kTJ0qVKlXyaThx+0rPbFw0+X+is86c3WKLLWTu3Ln+YD777DM5/PDDZcSIEX4Zdg455JCYuhEVeJAxAuPHjzfWAwYMyJhOKiIBEshdAgwxyN17U+g9mzp1qrRr106ChmzFihWlkAxZ3EMaswX8JHueZ6NzWxy89NJL8uqrr8r1118fMXJXx20jTvIgowQcY7fNqHIqIwESyDkCnPyVc7ekaDqE+NiOHTv6HtlCNGRxMxlmUDSP9MaBHnfccfL+++/bw11kQ+dwSYAESKBcCNCYLRfsvKgSgDE7dOhQQWhBoRqyuNE0Zovsca9Xr56MGzeuyEbN4ZIACZBA+RGAMctMBuXHv1ivjHjZ2bNny6hRoyw2ttBCC4L3lWEGQRrcJwESIAESIIEME0DMLBdMyDBUqktIAHlkMcELP4VsyAIEPbMJH4fCqrBkyRK5/fbbZZ999pFzzz03dHCLFi2Sxx9/3F5PrFu3Tlq2bGl1991335j6I0eOlMWLF8uQIUPkiy++kPvvv18++eQTue2226RVq1ZWf9q0afLggw9ava+//loaNmwohx12mPTr1y9iNj/0QB/6dvLJJ8tDDz0kzzzzjB3ffPPNdo2ffvpJLrjgAtl9991j+vLpp5/adeF9Rn8SCTI9jB07VtC/+fPn26SsNm3ayNFHHx0ThoEg+ieeeEI++ugjwT+mZs2a2fgwhmrVqoVeCt6YO++808I6vvnmG9lvv/1sXKGVA4Xff/+9jB492vIAQgfSqhxzzDFJtQ2o4S4JkECOEGCYQelvBFJK4YeSGgF4Zfv27WshBqm1zLPaOgml1KJDLrWOYlGQDqvBA05LC0+HDh0wA8ybM2eO3/6NN96wsmOPPdYvw47OdrRyNTq9rbfe2va32morT2NsbF+zIniPPPJIRJtguzFjxvh1cc3nnnvO6qpRa+1Rph9EnqYJ8481fjdCn05Ms3PomxqUfj01pq2ermluZRdeeGFEO3cwaNAgO3/JJZe4orhbNZy9tm3b+teoWbOmV7VqVTs+/vjj/Xaa3sy7+OKL/bHpN1yvdu3afrumTZt6H374oV/f7bz99tuevlb062l+SdvXdFzeP/7xD9vv37+/q+5vp0+f7u244452Hux1Bqqvo1evXn690uyk+zyV5ppsSwLFTKB169Ye/rYpJEAC2SHAMAO1siibCPTs2VPggUUKrx9++EF+/PFHOe+88+TXX3+V3r17W9mm2pv21MAUNQItDRiyJTgv7urVq82zizIkDUeCZngrEYg+adIk8z5u0rJx7+WXX5Y333xTHnvsMfOE3njjjXbinHPOsS28xvCqBgW5Wx9++GEriudxdvWRf/eEE04Q/eciatDKvHnz5Oeff5ZffvnFMj0cdNBBrqrcdddd5slWY9e81agDJvA+65cF26qRbTl6XSPUQbA9PLg4hzF/9913snz5ckuLhowSYbJ27Vpj+OWXX9o3aXihweytt96yHJXwIr/44othTVlGAiSQIwTwd47PvaAwzCBIg/skkAUCmbCRtVuZUFMUOtJhla4nLR3PLDyNv/32W8y9OPDAA81DeN1110Wccx7dBg0aePBiRstXX33lqeEZXezB2woW99xzj3/OeWZRDk9vmOy2227WbvLkyRGnX3nlFStXQzSiPOxAQxmsbvPmzT1dmSesipXp635Pl/qz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v64dOiKi+7s03hi6MPvDpfLr+vgT3yIa8YAESCCGAI3ZGCQsIAESIAESKC8CTZo0yXsjNsiuZdv2cueI82WzqtXkkSfekOHDbvVP7916f2m6686yatU3Muza0bJhw2/+Oex8unCe3HPHvRFlPCABEoglwDCDWCZlXjJkYPcyvyYvWNwEht88obgBcPQ5S6Bfv36Cn0KSdp06yy3XrpOLBt8n4x99VSqr13nQkIssG8EVl5wk5/T/P3nq2bfkw4+WSZuWTTQkoZIsWbpSps5cJK32aiy9+xYSDY6FBDJPgMZs5pmmpZHGRVrY2CgNAvzylAY0NikoAhUrVrDxVKy46eWk26/w9zk34AoSW9ed89tU2FjHlYe16dL1GBm2ep1cef0DMvbhl6VGjWryrwvPkwM7HioTx1WXy68eK4uXLLMfp6fVPs2kX59j3aFtw3RHVOABCRQhgQqeShGOO6eGDOOCxmxO3ZKC7gyft+zf3h49esgRRxzB1FxZRv3Jwo0LDmT5MmWmfvVP38mSRQvV0K0u9XZsKFvW2KpMrt20WZcyuQ4vQgLZIkDPbAgUcpkAACWiSURBVLbIUi8JkAAJkAAJpECgZu06ghhbCgmQQGoENr1jSa0da5MACZAACZAACZAACZBAuROgMVvut4AdIAESIAESIAESIAESSJcAjdl0ybEdCZAACZAACZAACZBAuROgMVvut4AdIAESIAESIAESIAESSJdARiaAIT0JkyIkdwsqaAqXv/76K7nKrEUCJEACJEACJEACJFAigYwYszBkacyWyNk/CWOWQgIbNmywLzWbb745YZAACZAACZAACZSCAMMMSgGPTUkgXQK77rqrbLHFFvLzzz+nq4LtSIAESIAESIAElACNWT4GJFAOBNybDLcthy7wkiRAAiRAAiRQEARozBbEbUw8iCeffFI6dOgg7777buLKGajxww8/SO/eveW0007LgDaqIAESIAESIAESIIFwAjRmw7kUXOkjjzwib7/9tvz6669lMrbly5fLmDFj5MsvvyyT6/EiJEACJEACJEACxUkgIxPAihMdR00CJEACJFCeBJo261Kel0/q2tddd50MHjxYKlWqlFR9ViIBEkidAI3Z1JnlVItvvvlGRo8eLe+99558/fXXsttuu0nLli3tFf/WW28tDz74oMyYMUNmz55t/R45cqQ8/fTTto8PWdSBTJs2zeouXrzY9DRs2FAOO+ww6devX8yHMHSg3pAhQ+SLL76Q+++/Xz755BO57bbbBO2uvvpq+fbbb00v6l1wwQW2v//++8vpp58uL730kvz3v/+Vbt26ycEHH2zngr+g96effpLbb79dNttsM18PrrvPPvvI2WefLfA0v/HGGzJr1ixp1KiRhVBceOGFUrly8o/0n3/+KWPHjrWxz58/3yZktWnTRo4++mjp2LFjsEuyfv16ufvuu+16CxYskBo1asiee+4pp5xyirRvH38tdYR3vPjii/LBBx/I9ttvL+3atZP+/ftH6A47eP755+XZZ5+1+7bVVlvJvvvuKwMGDDAdYfVZRgIkkJsE7rjjDjnvvPNku+22y80OslckUAgEdAJKqUU5lFpHsSgIYzV4wGlpDX/evHle7dq1PejET61atfz9999/33Seeuqpfpmr57affvqp1VEj1K+jqcM8TRflHx933HExfVODzM5rGIGnOYb9us8995y3aNEi/9hdx23VkDVdauxaHTVOY3SjQI0+O7969Wr//KuvvmplxxxzjHfuuefavhq6nhqVto9roF9qBPttStpRI9tr27at37ZmzZpe1apV7fj444+PaKpfBjzNPuDX1S8AnnpZ7BjjHzRoUER9HPz2229er169/DbVqlXz9avx66mBaud+/PHHiLaasstT499vV716dZ9x3bp1vZkzZ0bUT+cg3ectnWsVa5vu3bt7Dz30ULEOn+MOENhjjz28Dz/8MFDCXRIggUwTYMysWkH5KhdddJF5MNVglRUrVtg+PLXDhw+XbbbZxoYFr60ardK5c2c7fuCBB+wYZTvvvLOVqdFo3lw1GGXNmjXmVb3zzjsFi2FMmjTJPLtWMeoXPKFq+MncuXMFbeE9bNy4semHZxECLzGuhR94bksrajCbVxbeYPQVqa3god1hhx1scttNN92U8BJ//PGHnHDCCTJ9+nRRg1b0S4Hp+eWXX2wcBx10kK9j7dq1Vhce5mOPPdZigL///ntB3XvuuUeQJxbXBKegjBo1yry+2267rbz88ssCxujvww8/bLzUiA1W9/fBHT877bSTTJkyxR/jOeecI7i3zsvtN+AOCZBAThOARxZvzSgkQALZI5D8O9ns9YGa0yQAIwzSt29fM+awD+MJ8VlO6tSpI/jBa3FIgwYNZJdddnGn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EiABEiABEigYAjRmC+ZWciAkQAIkQAIkQAKlJeB5nvTp00fuv//+0qqKaB+t84UXXpDevXvL119/HVGPB6kToDGbOjO2IAESIAESIAESKFACf/31l63aNnny5IyNEAYyVoIL6pwxY4aMGTNGfvjhh4xdp1gV0Zgt1jvPcZMACZAACWSNwIYNG+S3335LST8MHrT5448/UmqXL5XTYZIvY2M/y5cAjdny5c+rkwAJkAAJFCCBQw45RLbYYguZO3du0qN78803rc1JJ52UdJt8qrjrrrva+H7++ed86jb7mgcEaMzmwU1iF0mABEiABPKLALysELdNpveurtsm0yaf6rhxuW0+9X3VqlWyevXqhF1GvZ9++ilhvWQrLF++PC19v//+u3z++eeCkInSSiZ1lbYv8drTmI1HhuUkQAIkQAJFQwBxi5iMc9pppxXNmDnQxAQmTpwo8CjvsMMOUqtWLTnooIPkyy+/jGl47733SoMGDazeVlttJc2aNZN33nknpl4yBd9++610797drrfjjjsK9DVs2FDGjh2bsPmKFSvkyCOPlBo1akijRo1se8EFF8ivv/5qbYcPHy7bbLON3H777RG67rzzTivH1kkiXa5eLmxpzObCXWAfSIAESIAEypUAPGCYjBNmqJRrx3jxciPw9ttvy9lnny3dunWTESNGyC677GIGKozDoAwbNkzOO+8888IPGTJEzjjjDPOKdurUSRYvXhysmnD/u+++k7322kseffRROeGEE2TcuHF27UqVKllfYIzGExjBLVu2lFdeeUU6d+4sqAsj+K677rIvamjXv39/qV69ulx77bWCa0GQTQH9hjGOcUCS0WUVc+WXuvtLLTqWUusoFgVkVSx3muMkgdwiMHjAabnVoRzrjca2Ii7Aa9++fUZ61q5dO9M3Z86cpPW98cYb1ubYY49Nuk0+Vdxpp51sfD/++GOZdzvs+Y/3/1gn4Fk/cf7BBx/0+6oT2LyaNWt6FSpU8NavX2/ln376qbf55pt7O++8s6eT9/y6zz77rOk466yzrExf99uxGsZ+naFDh1rZxx9/7Jedc845VqZpwfwy7Gjogl2jWrVqnnpMI865g3PPPdfa/uc//3FFtt133329ihUrep999pkdv/jii1bvX//6lx2ffvrpXuXKlb1Zs2b57ZLV5TcI7MTjGqiS8d3KelEKCZAA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)"],"metadata":{"id":"ymsNVA1QHvr4"}},{"cell_type":"markdown","source":["### [圖一] 程式撰寫、編譯、和連結的流程\n","\n","**text editor** 是用來寫程式的純文字編輯器，通常還會有一些額外的輔助功能，譬如縮排或改變關鍵字顏色，讓你的程式碼看起來更一目了然。\n","\n","**compiler** 是程式語言的核心工具，用來將你寫的 C source code 變成一堆要讓電腦執行的指令。由於我們要使用的程式開發工具 Visual C++、Dev C++ 或 Code::Blocks 所包含的 compiler 其實可以編譯 C 或 C++ source code，不過這兩種語言還是有一定程度的差異，所以必須強迫 VC++ 或 Dev C++ compiler 使用 C 語言的語法來編譯你的 source code。只要你的 source code 檔案存檔時選擇用的副檔名是 \".c\"， VC++ 或 Dev C++ 就會用 C compiler 來編譯你的程式。VC++ 使用的是 Microsoft 自行開發的 compiler，而 Dev C++ 和 Code:Blocks 則通常是用公開原始碼的 MinGW GCC。 另外，在 Dev C++ 裡可以從主選單裡選 [Tools]-->[Compiler Options]-->[Settings] 然後在 C compiler 的項目裡把 \"Support all ANSI standard C programs\" 項目選成 \"Yes\"。\n","\n","**linker** 是用來將編譯好的 object code 連結成最後的執行檔。因為除了我們自己寫的程式碼之外，無可避免一定會用到許多現成的 library (函式庫)。在現實的情況下，不可能每一東西都要靠自己創造，所以絕大多數的時候我們都會使用內建的或別人寫好的函式庫，來達到自己想要的功能。 linker 就是用來把我們的程式碼和需要的函式庫裡的程式碼連結在一起，形成單一的可執行檔。"],"metadata":{"id":"05G1Fqg6GRZX"}},{"cell_type":"code","source":["!ls -la"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"GSoqoDdpFKgd","executionInfo":{"status":"ok","timestamp":1645530406149,"user_tz":-480,"elapsed":401,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"49fe1f9e-8ce4-418f-e2ff-a72f313ceb0c"},"execution_count":62,"outputs":[{"output_type":"stream","name":"stdout","text":["total 44\n","drwxr-xr-x 1 root root 4096 Feb 22 11:41 .\n","drwxr-xr-x 1 root root 4096 Feb 22 10:28 ..\n","-rwxr-xr-x 1 root root 8304 Feb 22 11:04 a.out\n","drwxr-xr-x 4 root root 4096 Feb  1 14:31 .config\n","-rwxr-xr-x 1 root root 8304 Feb 22 11:41 hello_world\n","-rw-r--r-- 1 root root  184 Feb 22 11:43 hello_world.c\n","drwxr-xr-x 1 root root 4096 Feb  1 14:32 sample_data\n"]}]},{"cell_type":"code","execution_count":57,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vh5utIm1dKHz","executionInfo":{"status":"ok","timestamp":1645530231435,"user_tz":-480,"elapsed":299,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"a7a5e9e7-84a1-484b-8185-6ba21cce8263"},"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting hello_world.c\n"]}],"source":["%%writefile hello_world.c\n","//The C code starts from here.\n","#include <stdio.h>\n","int main(void) \n","{ \n","  printf(\"==================\\n\"); \n","  printf(\"   Hello world!\\n\"); \n","  printf(\"==================\\n\"); \n","  return 0;\n","}"]},{"cell_type":"code","source":["%%shell\n","\n","gcc hello_world.c -o hello_world\n","./hello_world"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Ug0ozLfLdpNi","executionInfo":{"status":"ok","timestamp":1645530116566,"user_tz":-480,"elapsed":490,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"d12f709c-624d-468d-b4c0-1a55069e4928"},"execution_count":56,"outputs":[{"output_type":"stream","name":"stdout","text":["==================\n","   Hello world!\n","==================\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":56}]},{"cell_type":"markdown","source":["### Example 1\n","*   為什麼要 `#include` \n","*   `main` 是什麼？\n","*   `printf` 只打 print 可以嗎？\n","*   為什麼要雙引號 `\" \"`？\n","*   `\\n` 反斜線加上 n 是什麼意思？\n","*   為什麼最後要有分號 `;` ？\n","*   `main` 前面的 `int` 是什麼意思？\n","*   `main` 後面括號裡的 `void` 是什麼意思？\n","*   為什麼要 `return 0;`"],"metadata":{"id":"VKYGPmbvE57_"}},{"cell_type":"code","source":["%%writefile E02_01.c\n","\n","#include <stdio.h>\n","\n","int main(void) /* display integer on screen */  {\n","  int num; // 變數 num 的型別是有整數 0, -1, 1, -2, 2, -3, ...\n","  num = 123; \n","  printf(\"The number is %d.\\n\", num);\n","  return 0; \n","}\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"p_T8eu3Wkk4k","executionInfo":{"status":"ok","timestamp":1645532763880,"user_tz":-480,"elapsed":269,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"0db1c750-acd7-46e8-e29c-3dd5d66fad60"},"execution_count":137,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting E02_01.c\n"]}]},{"cell_type":"code","source":["%%shell\n","\n","gcc E02_01.c -o E02_01\n","./E02_01"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"lWuINPf0lIUE","executionInfo":{"status":"ok","timestamp":1645532751405,"user_tz":-480,"elapsed":359,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"294d270d-e96c-4a8a-bc55-21dd39dbd6d5"},"execution_count":136,"outputs":[{"output_type":"stream","name":"stdout","text":["The number is \\123\\.\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":136}]},{"cell_type":"markdown","source":["這個簡單的程式會在螢幕上顯示一串文字 `The number is 123.` 。這個程式包含了每個程式幾乎都會有的幾個主要結構。我們一行一行來解釋它們的作用。程式開頭第一行\n","\n","`#include <stdio.h>`\n","\n","使用 `#include` 來將 `stdio.h` 檔案的內容加到你的程式的最前面。因為 `stdio.h` 檔案裡包含了許多和輸入輸出 (I/O) 有關的東西，當我們需要用到標準的輸入輸出功能時，只要用 `#include` 的方式把 `stdio.h` 引入，就不用重打 `stdio.h` 的內容。`stdio.h` 這個檔案包含在你安裝的 C compiler 中，可以試著搜尋 Dev C++ 或 VC++路徑裡的 `stdio.h` 檔案，然後用 Dev C++ 或其他純文字編輯器 (例如 notepad 或 TextEdit) 打開來看看裡面有多少內容。接下來看下一行\n","\n","`int main(void)`\n","\n","基本上 C 程式可以看成是許多 functions 的集合，每個 function 會負責某項工作，依照輸入的參數對資料作處理，然後將結果傳回。其中最重要的而且一定要包含的 function 就是 `main()`，它是你的程式的進入點，當你的程式開始執行時，首先就會執行 `main()`，然後在 `main()` 裡面再去呼叫其他 functions。我們在接下來的課程會在詳細介紹 C functions，目前只要先記得你的程式裡一定要有一個名稱是 `main()` 的 function。在 `main()` 前面的 `int` 表示 `main()` 結束後回傳值 (return value) 的型別是 `int`，也就是整數 (integer)。這個回傳值會傳回給 function 的呼叫者。因為我們是在作業系統下執行你的程式，所以在這個例子裡 `main()` 會把值回傳給作業系統。另外，在括號中的 `void` 表示這個程式的 `main()` 在呼叫時不需要傳入任何參數，我們稍後也會再介紹如何讓 `main()` 從作業系統中取得參數。\n","\n","這個範例還包含了註解　`/* display an integer on screen */`　所有被包含在 `/*` 和 `*/` 之間的文字，都會被 C compiler 忽略。註解的主要作用讓我們能在程式碼片段中夾雜文字說明，幫助撰寫或修改程式的人看懂程式碼。當程式碼越寫越多，程式變得很複雜的時候，註解可以讓我們更快速了解每段程式碼的意義。\n","\n","接下來會看到波浪括號 `{ ... }`，中間夾著 `main()` 的內容。波浪括號的作用相當於標示出 `main()` 的勢力範圍。當你的程式還有其他 functions 時，也是用 `{ }` 來決定每個 function 涵蓋的範圍。 \n","\n","再來看到的是 `int num;` 這行程式，這是所謂的變數宣告，我們要先讓 compiler 知道在 `{ }` 範圍內，將會用到一個整數 (integer) 變數 `num`。 前面提過 `int` 代表 integer， `num` 則是我們自己取的變數名稱。`int` 屬於的 C keywords 之一，而每個 keyword 都有特殊的意義，所以在替變數取名時要注意不要和這些 keywords 重複。(如果想先知道還有哪些 keywords，可以在網路上搜尋 \"C keywords\" 就會找到全部的 keywords 列表。) 在 C 裡面每個被用到的變數都必須先宣告過，如果忘了先宣告變數就直接使用，在 compile 的時候就會出錯。除了不能和已有的 keywords 重複之外，變數的取名還有一些限制。變數的名稱只能包含連續的大小寫英文字母、 `_` (底線)、以及數字等三類字元，而且只能用英文字母或底線當作第一個字元，變數開頭不能用數字，例如，例如： `num_dogs`, `B612`, `iPod`，都是合法的變數名稱 。變數名稱的長度最長不能超過 63 個字元，但是其實只有前 31 個字元是有效的，超過的部份會被忽略。C 語言會區分字母的大小寫，所以 `u2` 和 `U2` 代表兩個不同變數。寫程式時最好能使用固定命名規則。可以上網搜尋 \"Naming Conventions (programming)\"，參考慣用的規則來替變數和 function 取名。最後要特別注意的是，整個敘述句後面要用分號 `;` 來結尾，不能省略。剛開始寫程式時很容易因為忘記加分號而在 compile 時得到錯誤訊息。\n","\n","`num = 123;` 這個敘述是所謂的 assignment statement，用來把變數 `num` 的值設定成 `123`。因為已經宣告過 `num` 是個整數變數，在記憶體會有個位置存放它的值。等號的意義就是把右邊的值放到左邊的變數裡。結尾同樣要有分號。\n","\n","`printf(\"The number is %d.\\n\", num);` 這個敘述句呼叫了 `printf()` 這個 function。在剛開始學 C 的階段，`printf()` 會是我們最常用到的 function 之一，它的作用是把文字顯示在螢幕上。我們必須把想要顯示的字串當作參數傳給 `printf()`，在這個例子裡，我們傳了兩個參數給 `printf()`，兩個參數用逗號隔開。第一個參數是 \n","`\"The number is %d.\\n\"`，第二個參數則是 `num`。然後 `printf()` 會把這兩個參數做適當的結合，把第一個參數裡的 `%d` 用 `num` 變數目前的值 (`123`) 取代，再把結果顯示在螢幕上。"],"metadata":{"id":"pIZQfRrxI9dk"}},{"cell_type":"markdown","source":["第一個字串參數裡還有一個奇怪的東西 `\\n`， 它代表換行字元，你可以試著把它去掉看看程式執行結果會有什麼不同。 另外可以試試看如果把那一行打成下面這種形式 (在程式碼中直接按 Enter 鍵換行) 會發生什麼結果:\n","```\n","       printf(\"The number is %d.\n","       \", num);\n","```\n","在 compile 的時候應該會出現錯誤訊息。由此可見，`\\n` 是為了描述一些難以輸入的字元而設計的變通表示法 (稱作 escape sequence)，類似的字元還有 `\\t` 表示 tab 空格， `\\b` 表示 backspace，`\\\"` 表示雙引號，`\\\\` 表示反斜線。 我們再進一步解釋 `%d` 這個用法，它的作用是告訴 `printf()` 這個地方將會顯示一個整數，而且要用十進位 (decimal) 方式顯示。這樣的用法稱作格式化輸出，`printf()` 還有更多格式化輸出的選擇，我們會在稍後的例子裡一一介紹。\n","最後來到了 `return 0;` 這個敘述句。我們前面說過 `main()` 需要回傳一個整數給作業系統，這也是 `main()` 前面的 `int` 所代表的意義。既然已經指定要回傳整數，所以在程式結束時要用 `return` 這個 keyword 來指出我們要回傳的 值是多少。在這個例子回傳值是 `0`，至於它所代表的意義我們後續會再做介紹，目前暫時先忍耐一下，容許你的腦中 有一些不明確的東西存在。\n","到目前為止，我們已經學會了最基本的 C 程式結構:\n","```\n","#include <stdio.h>\n","int main(void)\n","{\n","  ...statements...\n","  return 0; \n","}\n","```\n","在我們前幾週的課程中會不斷地用到類似的結構。剛開始學寫程式，都有一些固定的模式可以套用，只要照著把固定 的程式碼輸入就可以，真正需要變動 (設計) 的部份是 `...statements...` 那一段，這部份就要依照我們想達到的功能， 填入適當的程式碼。\n"],"metadata":{"id":"IGg_OyXelwJM"}},{"cell_type":"markdown","source":["###Example 2\n","\n","\n","* `printf` 括號裡 用逗點隔開 是什麼意思？\n","* 百分比 `%` 加 `d` 有什麼作用？\n","* `printf(\"1234+5678\\n\");` 和 `printf(\"%d\\n\", 1234+5678);` 差別是什麼？\n","* `1234+5678` 的運算什麼時候算？"],"metadata":{"id":"g-yjbfD-mEPf"}},{"cell_type":"code","source":["%%writefile E02_02.c\n","\n","#include <stdio.h>\n","int main(void)\n","{\n","  printf(\"%d\\n\", 1234+5678);\n","  return 0;\n","}"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"B1PwthGooDPC","executionInfo":{"status":"ok","timestamp":1645532878878,"user_tz":-480,"elapsed":320,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"adffbcd8-b712-49de-a0e4-838ac9ab906d"},"execution_count":138,"outputs":[{"output_type":"stream","name":"stdout","text":["Writing E02_02.c\n"]}]},{"cell_type":"code","source":["%%shell\n","\n","gcc E02_02.c -o E02_02\n","./E02_02"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"whPuzHv0oMQe","executionInfo":{"status":"ok","timestamp":1645532884370,"user_tz":-480,"elapsed":316,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"bdedc85f-5eec-4209-9d96-3ff369d8d44b"},"execution_count":139,"outputs":[{"output_type":"stream","name":"stdout","text":["6912\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":139}]},{"cell_type":"markdown","source":["###Example 3\n","* `int x;` 的作用是什麼？\n","* `scanf` 的功能是什麼？\n","* `scanf` 為什麼不用 `\\n`\n","* `scanf` 後面的 `x` 會什麼要加 `&`"],"metadata":{"id":"BRqiWY7TnSdc"}},{"cell_type":"code","source":["%%writefile E02_03.c\n","\n","#include <stdio.h>\n","int main(void)\n","{\n","  int x;\n","  scanf(\"%d\", &x);\n","  printf(\"%d\\n\", x+1);\n","  return 0;\n","}\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"a5FKAEdupAO0","executionInfo":{"status":"ok","timestamp":1645534504650,"user_tz":-480,"elapsed":360,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"53a55996-a66c-455a-864e-b4d1da73b974"},"execution_count":159,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting E02_03.c\n"]}]},{"cell_type":"code","source":["%%shell\n","\n","gcc E02_03.c -o E02_03\n","./E02_03"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"JKQybP6upHEm","executionInfo":{"status":"ok","timestamp":1645534513539,"user_tz":-480,"elapsed":5876,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"19505395-9f30-46b4-d7c0-42ea2bed6a1a"},"execution_count":160,"outputs":[{"output_type":"stream","name":"stdout","text":["123\n","124\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":160}]},{"cell_type":"markdown","source":["要讓 C 程式讀取輸入的資料則可以用 `scanf()`，它的使用方法和 `printf()` 類似，都要先用第一個參 數指定格式，然後剩下的參數就是對應的變數。不一樣的地方是變數名稱前面多了`&` 符號。所以這一行程式碼\n","```\n","  scanf(\"%d\", &x);\n","```\n","就會把使用者輸入的數值存入變數 `x` 中。讀取的格式為 `int`，因此用 `%d` 告訴 `scanf()` 要讀取的資料的格式是整數。至於為什麼 `scanf()` 傳參數的時候要多一個 `&` ? 底下用一個簡單的比喻來解釋: 如果把變數想成一個盒子，則變數名稱 (譬如 `x`) 就是寫在盒子上的標籤，用來和其他盒子區別，而盒子裡的東西就 是那個變數所儲存的數值。當我們要將變數當作參數傳給某個 function (譬如 `printf()`) 的時候，C 語言的作法就是 把盒子裡的東西拿出來交給那個 function。但是對於像是 `scanf()` 這樣功能的 function 來說，它要的並不是盒子裡的東西，而是要整個盒子，因為它要讓使用者輸入的數值，能夠被放進盒子裡。要達到把整個盒子當參數 (而不是把盒子裡的東西當參數) 的這個目的，作法就是在參數變數前加上 `&`，告訴 compiler 要把整個盒子傳給 `scanf()`，讓 `scanf()` 可以將使用者輸入的數值放進盒子裡，然後回到 `main()` 之後， `x` 這個變數裡面就可以取出當時使用者所輸入的數值。初學者最常犯 的錯誤就是在使用 `scanf()` 讀取整數或浮點數變數的時候，忘了在變數前面加上 `&`。"],"metadata":{"id":"7QoYOsIxscyL"}},{"cell_type":"markdown","source":["###Example 4"],"metadata":{"id":"RvAsriUCpeCI"}},{"cell_type":"code","source":["%%writefile E02_04.c\n","\n","#include <stdio.h>\n","int main(void)\n","{\n","  int x, y;\n","  scanf(\"%d\", &x);\n","  scanf(\"%d\", &y);\n","  printf(\"%d\\n\", x+y);\n","  return 0;\n","}"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"mGsLcKRnpXVd","executionInfo":{"status":"ok","timestamp":1645534791384,"user_tz":-480,"elapsed":449,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"e3615284-31ce-4108-9abc-7bd634b86be9"},"execution_count":170,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting E02_04.c\n"]}]},{"cell_type":"code","source":["%%shell\n","\n","gcc E02_04.c -o E02_04\n","echo \"5 6\" | ./E02_04 > out\n","echo \"11\" > ans\n","diff ans out\n","ret=$?\n","\n","if [[ $ret -eq 0 ]]; then\n","    echo \"All accepted.\"\n","else\n","    echo \"Wrong answer.\"\n","fi"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"RK7kVd2wq3ln","executionInfo":{"status":"ok","timestamp":1645534795100,"user_tz":-480,"elapsed":312,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"c41bbfb0-4c5b-479c-a2c3-9c8a30a101e3"},"execution_count":171,"outputs":[{"output_type":"stream","name":"stdout","text":["All accepted.\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":171}]},{"cell_type":"markdown","source":["###Exercise 1\n","修改 Example 4 ，將裡面的兩個 `scanf` 合併。"],"metadata":{"id":"5js6IAMBphaC"}},{"cell_type":"markdown","source":["###補充說明\n","簡單的數學運算\n","例如：\n","```\n","   x = x * 2;\n","   x = (y+3)*5;\n","```\n","* 其中 `*` 代表乘法。 `/` 代表除法。\n","* 運算順序是先乘除後加減，否則要靠括號改變運算順序。\n","* 等號的作用是將**右邊的值**設給**左邊的變數**，所以左邊必須是變數，不能是數值 （例如 `3=x;` 不行)。"],"metadata":{"id":"djaDGG_Pp9um"}},{"cell_type":"markdown","source":["###Example 5\n"],"metadata":{"id":"3DslPAFlqpNP"}},{"cell_type":"code","source":["%%writefile E02_05.c\n","\n","#include <stdio.h>\n","int func1(void);\n","int func2(void);\n","int main(void)\n","{\n","  func1();\n","  printf(\"L%03d\\n\", __LINE__);\n","  return 0;\n","}\n","\n","int func1(void)\n","{\n","  func2();\n","  printf(\"L%03d\\n\", __LINE__);\n","  return 0;\n","}\n","\n","int func2(void)\n","{\n","  printf(\"Hello world!\\n\");\n","  printf(\"L%03d\\n\", __LINE__);\n","  return 0;\n","}\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Y9haw6Ybqsqh","executionInfo":{"status":"ok","timestamp":1645535582241,"user_tz":-480,"elapsed":484,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"583385fd-7317-4a83-af71-1a2e3aef1fff"},"execution_count":179,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting E02_05.c\n"]}]},{"cell_type":"code","source":["%%shell\n","\n","gcc E02_05.c -o E02_05\n","./E02_05"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gn3ppit0rASc","executionInfo":{"status":"ok","timestamp":1645535585257,"user_tz":-480,"elapsed":18,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"4ad3a2cc-d0c7-4fdd-a916-47c320b17ffc"},"execution_count":180,"outputs":[{"output_type":"stream","name":"stdout","text":["Hello world!\n","L022\n","L015\n","L008\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":180}]},{"cell_type":"markdown","source":["問：為什麼在 `main` 的上面需要多加上兩行 \n","`int func1(void);`  和\n","`int func2(void);` ？\n","\n","答：\n","為了要能區別「程式編譯的順序 」（這是 compiler 的工作，牠必須從檔案最前面開始，逐行解析，檢查你的程式碼的語法，並且轉換成對應的低階指令）\n","與「程式執行的順序」 （執行期間程式碼其實已經變成二進位碼，從 main 開始，依照函數呼叫順序，依照對應的運算順序進行）。"],"metadata":{"id":"l2w8CXaErKcg"}},{"cell_type":"markdown","source":["\n","#Example 6\n","C Functions\n","* function name\n","* parameters (cf. arguments)\n","* return values\n","* stack\n"],"metadata":{"id":"Tgxixt6ywNp1"}},{"cell_type":"code","source":["%%writefile E02_06.c\n","\n","#include <stdio.h>\n","double square(double x)\n","{\n","  return x*x;\n","}\n","\n","int main(void)\n","{\n","  double x;\n","  x = 3.2;\n","  printf(\"%f square is %f\\n\", x, square(x));\n","  return 0;\n","}"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gQGtjE5xwgOd","executionInfo":{"status":"ok","timestamp":1645535938666,"user_tz":-480,"elapsed":275,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"0d57c21e-9f3f-4830-9478-254dbbee135d"},"execution_count":188,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting E02_06.c\n"]}]},{"cell_type":"code","source":["%%shell\n","gcc E02_06.c -o E02_06\n","./E02_06"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bhGdXW5Gwn9A","executionInfo":{"status":"ok","timestamp":1645535920539,"user_tz":-480,"elapsed":310,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"2b918fd0-1be0-43c6-b4ff-7affd978b2b8"},"execution_count":187,"outputs":[{"output_type":"stream","name":"stdout","text":["3.256 square is 10.598\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":187}]},{"cell_type":"markdown","source":[" `double` 型別，為了計算的精確度，可以把變數宣告成 `double` (雙倍精確度浮點數)。在這個 例子中，由於我們要計算的數值包含小數點後的位數，所以不適合再用 `int` 整數型別來儲存數值，而要用能夠表示 更精細的數值的浮點數型別變數。整數和浮點數儲存數值的方式不一樣，我們會再做更詳細的介紹，目前暫時先記得， 處理整數的資料，就用 `int` 變數;處理有小數點的資料，可以用 `double`。\n","除了 `double`，也可以用 `float` 的變數型別來處理小數。`float` 和 `double` 的差別是，`float` 的精確度比較低。\n","\n","C 語言裡面當你的數值有小數點的時候，就不適合再用整數來儲存，而要用浮點數。當你寫 `3` 的時候，這個數會被 當成是整數，當你寫 `3.0` 就變會被認為是浮點數。除了直接寫出整個數值，浮點數還可以用以十為底的科學記號的 方式來表示，譬如: `2.5e-4` 就相當於 `2.5` 乘上 `10` 的 `-4` 次方，也就是 `0.00025`。浮點數和整數在電腦裡的儲 存格式不一樣，整數會完全用二進位編碼來儲存整個數值，浮點數則會拆成幾個部份，包括**正負號**、**底數**、**指數**三個 組成元素。用這樣的方式來儲存，讓我們可以用浮點數來表達更大範圍的數值(譬如 `-2` 後面接 `50` 個零，這麼大 的數只要寫成 `-2e50`，所以只要記錄 *i)* 是個負數，*ii)* 底數是 `2`，*iii)* 指數是 `50` 就夠了)。\n","\n","然而浮點數的精確度仍舊是有限的，所以有時候浮點運算結果可能和你預期的結果之間會有點誤差，譬如你覺得算出來的答案應該是 `1.0`， 但是實際上儲存的浮點數可能是 `0.999999`。\n","\n","此外，當我們把數值設定給變數時，要注意變數的型別是否符合我們的需求，譬如\n","```\n","  int a = 9.99;\n","  float pi = 3.1415926536;\n","```\n","這兩個情況都無法把我們想要的數值存到變數裡。對變數 `a` 來說，小數點後面的數目會被無條件捨去，所以 `a` 的值會 是 `9`。至於 `float` 的精確度只有保證**六個有效位數**，因此超過的位數就不一定正確。如果用 `double` 的話可以保證到 **十個有效位數**。"],"metadata":{"id":"RoYXFRxkqzRX"}},{"cell_type":"markdown","source":["###Example 7\n","改成用 `scanf()` 讀取使用者輸入的數字，然後呼叫 `square` 將平方算出來。資料型態從 `double` 改成 `float`。\n","\n","``` \n","#include <stdio.h>\n","float square(float y)\n","{\n","  return y*y;\n","}\n","\n","int main(void)\n","{\n","  float x;\n","  scanf(\"%f\", &x);\n","  printf(\"%f square = %f\\n\", x, square(x));\n","  return 0;\n","}\n","```"],"metadata":{"id":"4aw7JDC1xZhF"}},{"cell_type":"markdown","source":["### Debugging\n","找出下面程式碼的錯誤\n","\n","``` \n","#include <stdio.h>\n","int main(void)\n","{\n","  int fahr, int celsius;\n","  /* this program need debugging\n","  fahr = 52;\n","  celsius = 9 * (fahr - 32) / 5;\n","  printf(\" %d degrees Fahrenheit = %d degrees Celsius.\\n\", Fahr)\n","\n","  return 0;\n","}\n","```\n"],"metadata":{"id":"lPXO7iwVxAS9"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"9eh5wSQ3yY56"}},{"cell_type":"markdown","source":["###Data types\n","* `int`\n","* `short`\n","* `long`\n","* `unsigned int`\n","* `char`\n","* `float`\n","* `double`\n","\n","```\n","#include <stdio.h>\n","double square(double y)\n","{\n","  return y*y;\n","}\n","\n","int main(void)\n","{\n","  double x;\n","  scanf(\"%lf\", &x);\n","  printf(\"%f square = %f\\n\", x, square(x));\n","  return 0;\n","}\n","```\n","\n","\b`scanf` 的格式要改成 `%lf`\n","\n","注意：`%lf` 裡面的 `l` 是英文字 `L` 的小寫，不是數字 `1`。"],"metadata":{"id":"n1tLscJ1xOoj"}},{"cell_type":"markdown","source":["###常用 printf() 和 scanf() 格式總整理:\n","或直接看放在 [github 的講義內容](https://github.com/htchen/i2p-nthu/blob/master/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%80/Printf%20and%20Scanf/%E7%B8%BD%E6%95%B4%E7%90%86.md)\n","以及[相關範例](https://github.com/htchen/i2p-nthu/tree/master/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%80/Printf%20and%20Scanf)\n","\n","---\n","```\n","printf(\"%d\", n);\n","```\n","FORMAT ARGUMENT TYPE \n","* `%d`, `%i`: int 十進位表示法 \n","* `%u`: unsigned int\n","* `%x`: unsigned int 十六進位表示法 \n","* `%#x`: unsigned int 十六進位表示法 數字前面會自動加上 `0x`  \n","* `%f`: double (傳給 printf() 的參數型別如果是 float，其實會直接被升級成 double) \n","* `%Lf`: long double \n","* `%e`, `%E`: double 科學記號表示法 \n","* `%c`: int (顯示出對應的字元, 傳參數的時候 char 會先被轉成 int) \n","* `%s`: `char *` 用來顯示字串 \n","* `%p`: `void *` 用來顯示指標 \n","* `%g`, `%G`: double 選擇 `%f` 或 `%e` 兩者之中較簡短的表示法 \n","\n","---\n","```\n","scanf(\"%d\", &n);\n","```\n","FORMAT ARGUMENT TYPE \n","* `%d`: `int *` 傳整數變數的位址 例如 `&n` 會將讀取到的整數值存入 `n` \n","* `%ld`: `long *` \n","* `%lld`: `long long *` \n","* `%u`: `unsigned int *`\n","* `%f`: `float *` 讀取 float \n","* `%lf`: `double *` 讀取 double \n","* `%Lf`: `long double *` 讀取 long double \n","* `%c`: `char *` 讀取固定數量的字元 例如 `%3c` \n","* `%s`: `char *` 讀取用來字串 (至空格出現為止) \n","* `%n`: `int *` 搭配 `%s` 使用 讀取到的字元數會存入參數中 假設 \n","```\n","char a[100]; \n","int len; \n","```\n","則做完 `scanf(\"%s%n\", a, &len);` 之後 `len` 會得到讀到的字元數量 \n","\n","---\n","還有非常多的格式和用法的變化，如想更深入了解請參考 [The GNU C Library Reference Manual](http://www.gnu.org/software/libc/manual/html_mono/libc.html)\n","第十二章，尤其是 pp.313-。\n","\n"],"metadata":{"id":"NmKnqE-IyqZm"}},{"cell_type":"markdown","source":["###Example 8\n","####使用 陣列 Array"],"metadata":{"id":"B8KeYnWhzgYf"}},{"cell_type":"code","source":["%%writefile E02_08.c\n","#include <stdio.h>\n","\n","int main()\n","{\n","  int x[10] = {0};  // Create an integer array of 10 elements. All elements are initialized as 0.\n","  int y[5] = {2, 4, 6, 8, 10}; // Create an integer array of five elements with the given initial values.\n"," \n","  x[0] = 3; \n","\n","  // The index starts with 0.\n","  // y has five elements, so the index goes from 0 to 4.\n","  printf(\"%d %d %d %d %d\\n\", y[0], y[1], y[2], y[3], y[4]); \n","\n","  printf(\"%d %d\\n\", x[0], x[3]);\n","\n","  return 0;\n","}"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"WkCMmTKK5JnY","executionInfo":{"status":"ok","timestamp":1645536524811,"user_tz":-480,"elapsed":298,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"791593b5-d936-4384-c12f-59f4d6183088"},"execution_count":189,"outputs":[{"output_type":"stream","name":"stdout","text":["Writing E02_08.c\n"]}]},{"cell_type":"code","source":["%%shell\n","gcc E02_08.c -o E02_08\n","./E02_08"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"BGY0ilJ1uQMV","executionInfo":{"status":"ok","timestamp":1645536530028,"user_tz":-480,"elapsed":293,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"e9996591-cd74-4992-8d52-a99003ee0bc3"},"execution_count":190,"outputs":[{"output_type":"stream","name":"stdout","text":["2 4 6 8 10\n","3 0\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":190}]},{"cell_type":"markdown","source":["###如何用 `%` 運算符號，求兩數相除之後的餘數？\n","\n","\n","####練習\n","1. 運用 `%` 求餘數 取出十進位整數的每一位數\n","2. 把 array 當作對照表\n","\n","下面的式子會有甚麼效果？\n","```\n","c = (x%2)*a + ((x+1)%2)*b;\n","```\n","\n"],"metadata":{"id":"ZavoLIV8ztDA"}},{"cell_type":"code","source":["%%writefile E02_09.c\n","#include <stdio.h>\n","int main(void)\n","{\n","    int a, b, c, x;\n","    printf(\"enter two numbers: \");\n","    scanf(\"%d%d\", &a, &b);\n","    printf(\"choose the first or the second: \");\n","    scanf(\"%d\", &x);\n","    c = (x%2)*a + ((x+1)%2)*b;\n","    printf(\"%d\\n\", c);\n","    return 0;\n","}"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"1CQD5pGooiXJ","executionInfo":{"status":"ok","timestamp":1645536964913,"user_tz":-480,"elapsed":256,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"6765d283-dd13-4a3c-9d53-2469c704000e"},"execution_count":195,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting E02_09.c\n"]}]},{"cell_type":"code","source":["%%shell\n","gcc E02_09.c -o E02_09\n","./E02_09"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"sKMQnETxowJZ","executionInfo":{"status":"ok","timestamp":1645536997765,"user_tz":-480,"elapsed":6437,"user":{"displayName":"HT Chen","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"17748361917871513601"}},"outputId":"e5418883-7c5b-404b-baee-d1799a21b3cd"},"execution_count":197,"outputs":[{"output_type":"stream","name":"stdout","text":["enter two numbers: 100 200\n","choose the first or the second: 2\n","200\n"]},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":197}]}]}