tek4

[Lập trình C từ 0 đến 1] Bài 4. Các khái niệm cơ bản trong ngôn ngữ lập trình C

by - September. 21, 2021
Kiến thức
Học
<p>B&agrave;i viết &ldquo;[Lập tr&igrave;nh C từ 0 đến 1] B&agrave;i 4. C&aacute;c kh&aacute;i niệm cơ bản trong ng&ocirc;n ngữ lập tr&igrave;nh C&rdquo; l&agrave; b&agrave;i viết tiếp theo nằm trong series hướng dẫn học lập tr&igrave;nh C của <a href="https://tek4.vn/" target="_blank" rel="noopener">tek4.vn</a>.</p> <p>Độc giả c&oacute; thể tham khảo c&aacute;c b&agrave;i viết kh&aacute;c trong series b&agrave;i viết n&agrave;y&nbsp;<a href="https://tek4.vn/lap-trinh-c-co-ban-den-nang-cao/" target="_blank" rel="noopener">tại đ&acirc;y</a></p> <p>B&agrave;i viết n&agrave;y sẽ cung cấp đến độc giả những kh&aacute;i niệm cơ bản nhất về ng&ocirc;n ngữ C. Trong loạt b&agrave;i hướng dẫn [Lập tr&igrave;nh C từ 0 đến 1], IDE được sử dụng l&agrave; Code::Blocks</p> <h1>Bộ k&yacute; tự</h1> <p>Mọi ng&ocirc;n ngữ lập tr&igrave;nh đều được x&acirc;y dựng từ một bộ k&yacute; tự n&agrave;o đ&oacute;. Ng&ocirc;n ngữ C được x&acirc;y dựng tr&ecirc;n bộ k&yacute; tự sau:</p> <p>26 chữ c&aacute;i thường : a b c .. z ( a đến z thường tr&ecirc;n b&agrave;n ph&iacute;m tiếng anh)</p> <p>26 chữ c&aacute;i hoa : A B C .. Z&nbsp;&nbsp;&nbsp;( A đến Z hoa tr&ecirc;n b&agrave;n ph&iacute;m tiếng anh)</p> <p>10 chữ số : 0 1 2 .. 9</p> <p>C&aacute;c k&yacute; hiệu to&aacute;n học : + - * / = ( )</p> <p>K&yacute; tự gạch nối : _</p> <p>C&aacute;c k&yacute; tự kh&aacute;c : . , : ; [ ]&nbsp; {} ! \ &amp; % # $ ...</p> <p>Dấu c&aacute;ch (space) d&ugrave;ng để t&aacute;ch c&aacute;c từ.</p> <p><strong><em>Ch&iacute;nh v&igrave; vậy:</em></strong> Khi viết chương tr&igrave;nh C, ch&uacute;ng ta kh&ocirc;ng được sử dụng bất kỳ k&yacute; tự n&agrave;o kh&aacute;c ngo&agrave;i c&aacute;c k&yacute; tự được liệt k&ecirc; ở tr&ecirc;n</p> <h1>Kiểu dữ liệu</h1> <table style="width: 570px;" width="582"> <tbody> <tr> <td style="width: 46px;" width="45"><strong>TT</strong></td> <td style="width: 113px;" width="112"><strong>Kiểu dữ liệu</strong></td> <td style="width: 106px;" width="107"><strong>K&iacute;ch thước</strong></td> <td style="width: 305px;" width="318"><strong>Miền gi&aacute; trị</strong></td> </tr> <tr> <td style="width: 46px;" width="45"> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> </td> <td style="width: 113px;" width="112"> <p>unsigned char</p> <p>char</p> <p>enum</p> <p>unsigned int</p> <p>short int</p> <p>int</p> <p>unsigned long</p> <p>long</p> <p>float</p> <p>double</p> <p>long double</p> </td> <td style="width: 106px;" width="107"> <p>1 byte</p> <p>1 byte</p> <p>2 bytes</p> <p>2 bytes</p> <p>2 bytes</p> <p>2 bytes</p> <p>4 bytes</p> <p>4 bytes</p> <p>4 bytes</p> <p>8 bytes</p> <p>10 bytes</p> </td> <td style="width: 305px;" width="318"> <p>0 đến 255</p> <p>&ndash; 128 đến 127</p> <p>&ndash; 32,768 đến 32,767</p> <p>0 đến 65,535</p> <p>&ndash; 32,768 đến 32,767</p> <p>&ndash; 32,768 đến 32,767</p> <p>0 đến 4,294,967,295</p> <p>&ndash; 2,147,483,648 đến 2,147,483,647</p> <p>3.4 * 10&ndash;38&nbsp;đến 3.4 * 1038</p> <p>1.7 * 10&ndash;308&nbsp;đến 1.7 * 10308</p> <p>3.4 * 10&ndash;4932&nbsp;đến 1.1 * 104932</p> </td> </tr> </tbody> </table> <p>C&oacute; 4 kiểu dữ liệu cơ bản trong C l&agrave;: char, int, float, double.</p> <h1>Lời ch&uacute; th&iacute;ch</h1> <p>Trong lập tr&igrave;nh để đơn giản việc ph&aacute;t triển v&agrave; đọc hiểu m&atilde; nguồn ch&uacute;ng ta thường hay sử dụng những lời ch&uacute; th&iacute;ch để ch&uacute; th&iacute;ch cho c&aacute;c h&agrave;nh động v&agrave; giải th&iacute;ch m&atilde; nguồn.</p> <p>V&iacute; dụ như:</p> <p>//TODO để thể hiện đang l&agrave;m dang dở</p> <p>/* Dev by 3lev3n */ để thể hiện m&igrave;nh l&agrave; người lập tr&igrave;nh</p> <p>Vậy chung quy lại những c&aacute;i g&igrave; cần giải th&iacute;ch, ch&uacute; th&iacute;ch trong code C m&agrave; kh&ocirc;ng l&agrave;m ảnh hưởng đến kết quả thực thi của chương tr&igrave;nh C gọi l&agrave; ch&uacute; th&iacute;ch</p> <p>C&oacute; 2 c&aacute;ch viết ch&uacute; th&iacute;ch cơ bản</p> <ul> <li><strong>// Lời ch&uacute; th&iacute;ch</strong></li> </ul> <p>Dấu &ldquo;//&rdquo; sau đ&oacute; đến lời ch&uacute; th&iacute;ch l&agrave; đ&aacute;nh dấu to&agrave;n bộ h&agrave;ng đ&oacute; bắt đầu từ sau dấu &ldquo;//&rdquo; l&agrave; ch&uacute; th&iacute;ch</p> <ul> <li><strong>/* Lời ch&uacute; th&iacute;ch */</strong></li> </ul> <p>Dấu &ldquo;/*&rdquo; đến lời chủ th&iacute;ch l&agrave; khẳng định đ&aacute;nh dấu to&agrave;n bộ code từ sau dấu &ldquo;/*&rdquo; đến khi n&agrave;o gặp dấu &ldquo;*/&rdquo; l&agrave; ch&uacute; th&iacute;ch</p> <p><img class="wp-image-7490 aligncenter" src="https://tek4.vn/wp-content/uploads/2021/01/anh1.png" alt="" width="427" height="275" /></p> <h1><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Thư viện</span></span></h1> <p>Nghe đến thư viện ta đều biết n&oacute; l&agrave; kho chứa c&aacute;c t&agrave;i nguy&ecirc;n, t&agrave;i liệu, kiến thức. Trong lập tr&igrave;nh thư viện cũng l&agrave; kho chứa c&aacute;c t&agrave;i liệu li&ecirc;n quan đến lập tr&igrave;nh. Thư viện l&agrave; tập hợp c&aacute;c chuẩn mẫu code được thiết kế sẵn như: h&agrave;m, thủ tục, hằng, &hellip;</p> <p>Thư viện trong C l&agrave; một bộ c&aacute;c h&agrave;m, hằng v&agrave; header file như &lt;stdio.h&gt;,&lt;math.h&gt;, &lt;string.h&gt; ... đ&atilde; được x&acirc;y dựng sẵn. Để sử dụng c&aacute;c h&agrave;m, hằng, thủ tục trong thư viện ch&uacute;ng ta cần phải khai bao c&aacute;c thư viện đ&oacute; (header file) ở phần đầu chương tr&igrave;nh. V&iacute; dụ:<br />- Khi sử dụng c&aacute;c h&agrave;m printf() h&agrave;m xuất , scanf() h&agrave;m nhập để thực hiện việc nhập xuất ra m&agrave;n h&igrave;nh ta cần khai b&aacute;o thư viện &ldquo;stdio.h&rdquo; tr&ecirc;n đầu chương tr&igrave;nh.</p> <h1>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img class="wp-image-7492 aligncenter" src="https://tek4.vn/wp-content/uploads/2021/01/phot.png" alt="" width="444" height="184" /></h1> <ul> <li>Đoạn chương tr&igrave;nh tr&ecirc;n sử dụng h&agrave;m printf() n&ecirc;n cần phải khai b&aacute;o thư viện l&agrave; #include &lt;stdio.h&gt;</li> </ul> <pre class="lang:default decode:true EnlighterJSRAW">#include &lt;T&ecirc;n thư viện&gt;</pre> <p>L&agrave; c&uacute; ph&aacute;p khai b&aacute;o thư viện nằm trong bộ thư viện định sẵn trong code∷block</p> <pre class="lang:default decode:true EnlighterJSRAW">#include "T&ecirc;n thư viện"</pre> <p>L&agrave; c&uacute; ph&aacute;p khai b&aacute;o thư viện c&ugrave;ng cấp thư mục với tệp m&atilde; nguồn C đang thực thi</p> <h1>Biến</h1> <p>Trong lập tr&igrave;nh khi cần lưu trữ t&iacute;nh to&aacute;n hoặc chuyển gi&aacute; trị qua lại giữa c&aacute;c đoạn chương tr&igrave;nh kh&aacute;c nhau, ta cần khai b&aacute;o một phạm vi lưu trữ để lưu gi&aacute; trị tại thời điểm đ&oacute;. Biến trong C l&agrave; một t&ecirc;n đại diện cho một địa chỉ &ocirc; nhớ trong bộ nhớ m&aacute;y t&iacute;nh.</p> <p>Để đơn giản h&oacute;a cho việc gọi v&agrave; đặt t&ecirc;n người ta sử dụng kiểu dữ liệu v&agrave; t&ecirc;n biến để khẳng định biến đ&oacute; thuộc kiểu dữ liệu n&agrave;o.</p> <ul> <li><em>Đ&acirc;y l&agrave; c&uacute; ph&aacute;p khai b&aacute;o 1 biến đơn giản trong C.</em></li> </ul> <p><strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Kiểu dữ liệu T&ecirc;nbiến;</strong></p> <p>T&ecirc;n biến l&agrave;: bienDauTien .Kiểu dữ liệu l&agrave; interger (số nguy&ecirc;n):</p> <pre class="lang:default decode:true ">int bienDauTien;</pre> <p style="text-align: justify;">T&ecirc;n biến l&agrave;: bienTest. Kiểu dữ liệu l&agrave; interger (số nguy&ecirc;n). Gi&aacute; trị ban đầu bằng 10;</p> <pre class="lang:default decode:true ">int bienTest = 10;</pre> <h1>Hằng</h1> <p style="text-align: justify;">Như ta đ&atilde; được học hằng số l&agrave; một số kh&ocirc;ng thay đổi, trong lập tr&igrave;nh Hằng cũng l&agrave; một gi&aacute; trị kh&ocirc;ng thay đổi. N&oacute;i một c&aacute;ch ch&iacute;nh x&aacute;c th&igrave; hằng l&agrave; một biến kh&ocirc;ng thay đổi gi&aacute; trị.</p> <p style="text-align: justify;">Hằng MAX trong v&iacute; dụ lu&ocirc;n c&oacute; gi&aacute; trị l&agrave; 100 v&agrave; kiểu dữ liệu l&agrave; số nguy&ecirc;n:</p> <pre class="lang:default decode:true">#define MAX 100</pre> <h1>Mảng</h1> <p style="text-align: justify;">Mảng l&agrave; tập hợp c&aacute;c biến c&oacute; c&ugrave;ng t&ecirc;n gọi nhưng kh&aacute;c vị tr&iacute; v&agrave; nằm cạnh nhau trong bộ nhớ m&aacute;y t&iacute;nh. Để khai b&aacute;o sử dụng mảng trong C ta cần phải nắm r&otilde; c&aacute;c quy tắc về đặt t&ecirc;n v&agrave; khai b&aacute;o mảng.</p> <p>C&aacute;ch khai b&aacute;o:</p> <pre class="lang:default decode:true ">Kiểudữliệu T&ecirc;nmảng [Giới hạn số lượng phần tử] </pre> <pre class="lang:default decode:true">int mangA [100];</pre> <p>Theo c&aacute;ch khai b&aacute;o tr&ecirc;n mảng mangA c&oacute; 100 phần tử int bắt đầu từ 0-&gt;99</p> <h1>Từ kh&oacute;a</h1> <p style="text-align: justify;">Từ kho&aacute; l&agrave; những từ được sử dụng để khai b&aacute;o c&aacute;c kiểu dữ liệu, để viết c&aacute;c to&aacute;n tử v&agrave; c&aacute;c c&acirc;u lệnh. Kh&ocirc;ng được d&ugrave;ng c&aacute;c từ kho&aacute; để đặt t&ecirc;n cho c&aacute;c hằng, biến, mảng, h&agrave;m,... khi đ&oacute; chương tr&igrave;nh sẽ b&aacute;o lỗi. Từ kho&aacute; phải được viết bằng chữ thường, v&iacute; dụ: viết từ kho&aacute; khai b&aacute;o kiểu nguy&ecirc;n l&agrave; int chứ kh&ocirc;ng phải l&agrave; INT.</p> <p>Bảng dưới đ&acirc;y liệt k&ecirc; c&aacute;c từ kho&aacute; của C trong Code::Block:</p> <table style="width: 469px;"> <tbody> <tr> <td style="width: 117px;" width="113">switch</td> <td style="width: 118px;" width="114">break</td> <td style="width: 132px;" width="128">case</td> <td style="width: 102px;" width="98">while</td> </tr> <tr> <td style="width: 117px;" width="113">char</td> <td style="width: 118px;" width="114">const</td> <td style="width: 132px;" width="128">continue</td> <td style="width: 102px;" width="98">default</td> </tr> <tr> <td style="width: 117px;" width="113">do</td> <td style="width: 118px;" width="114">double</td> <td style="width: 132px;" width="128">else</td> <td style="width: 102px;" width="98">enum</td> </tr> <tr> <td style="width: 117px;" width="113">extern</td> <td style="width: 118px;" width="114">far</td> <td style="width: 132px;" width="128">float</td> <td style="width: 102px;" width="98">for</td> </tr> <tr> <td style="width: 117px;" width="113">goto</td> <td style="width: 118px;" width="114">huge</td> <td style="width: 132px;" width="128">if</td> <td style="width: 102px;" width="98">int</td> </tr> <tr> <td style="width: 117px;" width="113">interrupt</td> <td style="width: 118px;" width="114">long</td> <td style="width: 132px;" width="128">near</td> <td style="width: 102px;" width="98">void</td> </tr> <tr> <td style="width: 117px;" width="113">register</td> <td style="width: 118px;" width="114">return</td> <td style="width: 132px;" width="128">short</td> <td style="width: 102px;" width="98">signed</td> </tr> <tr> <td style="width: 117px;" width="113">sizeof</td> <td style="width: 118px;" width="114">static</td> <td style="width: 132px;" width="128">struct</td> <td style="width: 102px;" width="98">unsigned</td> </tr> <tr> <td style="width: 117px;" width="113">typedef</td> <td style="width: 118px;" width="114">volatile</td> <td style="width: 132px;" width="128">&nbsp;</td> <td style="width: 102px;" width="98">&nbsp;</td> </tr> <tr> <td style="width: 117px;">&nbsp;</td> <td style="width: 118px;">&nbsp;</td> <td style="width: 132px;">&nbsp;</td> <td style="width: 102px;">&nbsp;</td> </tr> </tbody> </table> <h1>C&aacute;ch đặt T&ecirc;n trong C</h1> <p style="text-align: justify;">C&aacute;ch đặt t&ecirc;n rất quan trọng trong qu&aacute; tr&igrave;nh lập tr&igrave;nh, n&oacute; kh&ocirc;ng những thể hiện r&otilde; &yacute; nghĩa trong chương tr&igrave;nh m&agrave; c&ograve;n d&ugrave;ng để x&aacute;c định c&aacute;c gi&aacute; trị kh&aacute;c nhau khi thực hiện chương tr&igrave;nh. T&ecirc;n thường được đặt cho hằng, biến, mảng, con trỏ, nh&atilde;n,&hellip; Chiều d&agrave;i tối đa của t&ecirc;n l&agrave; 32 k&yacute; tự.</p> <p style="text-align: justify;">T&ecirc;n biến hợp lệ l&agrave; một chuỗi k&yacute; tự li&ecirc;n tục gồm: K&yacute; tự chữ, số v&agrave; dấu gạch dưới. K&yacute; tự đầu của t&ecirc;n phải l&agrave; chữ hoặc dấu gạch dưới. Khi đặt t&ecirc;n kh&ocirc;ng được đặt tr&ugrave;ng với c&aacute;c từ kh&oacute;a.</p> <p><strong><u>V&iacute; dụ </u>:</strong></p> <p>C&aacute;c v&iacute; dụ đặt t&ecirc;n đ&uacute;ng: <span class="lang:default decode:true crayon-inline ">bienA, mangB, Hang_C, bien_1, &hellip;</span></p> <p>C&aacute;c v&iacute; dụ đặt t&ecirc;n sai:</p> <p><span class="lang:default decode:true crayon-inline ">3IEv3n</span>&nbsp;&nbsp;(k&yacute; tự đầu l&agrave; số)</p> <p><span class="lang:default decode:true crayon-inline">Cong-Thanh</span>&nbsp;&nbsp;(sử dụng dấu gạch ngang)</p> <p><span class="lang:default decode:true crayon-inline ">int</span>&nbsp;&nbsp;(đặt t&ecirc;n tr&ugrave;ng với từ kh&oacute;a)</p> <p><span class="lang:default decode:true crayon-inline ">tek 4</span>&nbsp;&nbsp;(c&oacute; khoảng trắng)</p> <p><span class="lang:default decode:true crayon-inline ">tek(4)</span>&nbsp;&nbsp;(c&oacute; dấu ngoặc tr&ograve;n)</p> <ul> <li>Ch&uacute; &yacute;: <ul> <li>Trong C t&ecirc;n <span class="lang:default decode:true crayon-inline ">congthanh</span> kh&aacute;c với <span class="lang:default decode:true crayon-inline ">CongThanh</span>&nbsp;, tức l&agrave; trong C ph&acirc;n bi&ecirc;t chữ hoa chữ thường</li> </ul> </li> </ul> <p style="text-align: justify;">Ch&uacute;ng ta sẽ kết th&uacute;c &ldquo;B&agrave;i 4. C&aacute;c kh&aacute;i niệm cơ bản trong ng&ocirc;n ngữ lập tr&igrave;nh C&rdquo; trong series [Lập tr&igrave;nh C từ 0 đến 1] ở đ&acirc;y. H&atilde;y c&ugrave;ng đ&oacute;n xem &ldquo;B&agrave;i 5. Cấu tr&uacute;c chương tr&igrave;nh C, một chương tr&igrave;nh C tối thiểu cần g&igrave;?&rdquo;.</p> <p style="text-align: justify;">H&atilde;y để lại b&igrave;nh luận v&agrave; theo d&otilde;i series b&agrave;i viết: &ldquo;<a href="https://tek4.vn/tu-khoa/lap-trinh-c-tu-0-den-1/">Lập tr&igrave;nh C từ 0 đến 1</a>&rdquo; để tiếp tục cập nhật những th&ocirc;ng tin mới nhất.</p>