tek4

[Lập trình C từ 0 đến 1]Bài 15. Hàm trong C, đặc trưng của ngôn ngữ hướng thủ tục

by - September. 26, 2021
Kiến thức
Học
<h1>[Lập tr&igrave;nh C từ 0 đến 1]B&agrave;i 15. H&agrave;m trong C, đặc trưng của ng&ocirc;n ngữ hướng thủ tục</h1> <p>B&agrave;i viết &ldquo;[Lập tr&igrave;nh C từ 0 đến 1]B&agrave;i 15. H&agrave;m trong C, đặc trưng của ng&ocirc;n ngữ hướng thủ tụ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 n&agrave;y ch&uacute;ng ta sẽ t&igrave;m hiểu về h&agrave;m v&agrave; c&aacute;c đặc trưng của ng&ocirc;n ngữ hướng thủ tục</p> <h2>Lập tr&igrave;nh hướng cấu tr&uacute;c l&agrave; g&igrave;?</h2> <p>Lập tr&igrave;nh hướng cấu tr&uacute;c hay c&ograve;n gọi l&agrave; lập tr&igrave;nh hướng thủ tục (Procedure Oriented Programming -- POP): l&agrave; một kỹ thuật lập tr&igrave;nh truyền thống, trong đ&oacute; chương tr&igrave;nh được chia th&agrave;nh c&aacute;c h&agrave;m (chương tr&igrave;nh con)</p> <p>Mỗi chương tr&igrave;nh c&ograve;n c&oacute; thể được chia ra nhiều chương tr&igrave;nh con kh&aacute;c để đơn giản h&oacute;a c&ocirc;ng việc của ch&uacute;ng. (Qu&aacute; tr&igrave;nh l&agrave;m mịn)</p> <h4>V&iacute; dụ:</h4> <p>Chương tr&igrave;nh nhập v&agrave; hiển thị th&ocirc;ng tin người d&ugrave;ng sẽ chia th&agrave;nh hai chương tr&igrave;nh con l&agrave; chương tr&igrave;nh nhập v&agrave; xuất, nếu việc nhập th&ocirc;ng tin phức tạp th&igrave; chương tr&igrave;nh nhập th&ocirc;ng tin c&oacute; thể chia ra nhiều chương tr&igrave;nh con kh&aacute;c nhau...</p> <p>C l&agrave; một ng&ocirc;n ngữ lập tr&igrave;nh hướng thủ tục (cấu tr&uacute;c)</p> <h2>Đặc điểm, T&iacute;nh chất</h2> <p>Chương tr&igrave;nh = Cấu tr&uacute;c dữ liệu + Giải thuật</p> <p>Cấu tr&uacute;c dữ liệu: c&aacute;ch m&ocirc; tả, tổ chức dữ liệu</p> <p>Giải thuật: thuật to&aacute;n, c&aacute;c bước giải quyết b&agrave;i to&aacute;n</p> <p>Để li&ecirc;n kết giữa c&aacute;c h&agrave;m với nhau ta thường d&ugrave;ng biến to&agrave;n cục hoặc con trỏ.</p> <h2>C&aacute;c t&iacute;nh chất cơ bản của lập tr&igrave;nh hướng cấu tr&uacute;c l&agrave;:</h2> <p>Tập chung v&agrave;o c&ocirc;ng việc cần thực hiện (thuật to&aacute;n)</p> <p>Chương tr&igrave;nh lớn được chia th&agrave;nh c&aacute;c chương tr&igrave;nh con, mỗi chương tr&igrave;nh con c&oacute; thể gọi tới một hoặc nhiều lần theo thứ tự bất kỳ.</p> <p>Phần lớn c&aacute;c h&agrave;m sử dụng dữ liệu chung</p> <p>Dữ li&ecirc;u trong hệ thống được chuyển động từ h&agrave;m n&agrave;y sang h&agrave;m kh&aacute;c.</p> <p>H&agrave;m biến đổi dữ liệu từ dạng n&agrave;y sang dạng kh&aacute;c</p> <p>Sử dụng c&aacute;ch tiếp cận top-down trong thiết kế chương tr&igrave;nh</p> <h2>Ưu nhược điểm</h2> <h4>Ưu điểm:</h4> <p>Tư duy giải thuật r&otilde; r&agrave;ng.</p> <p>Đơn giản, dễ hiểu.</p> <h4>Nhược điểm:</h4> <p>Trong lập tr&igrave;nh hướng cấu tr&uacute;c ta thường quan t&acirc;m đến việc ph&aacute;t triển c&aacute;c h&agrave;m m&agrave; &iacute;t quan t&acirc;m tới dữ liệu -- thứ m&agrave; ch&uacute;ng d&ugrave;ng để xử l&yacute; c&ocirc;ng việc.</p> <p>(Điều n&agrave;y khiến cho dữ liệu kh&oacute; kiểm so&aacute;t)</p> <p>Kh&ocirc;ng hỗ trợ sử dụng lại m&atilde; nguồn: mỗi cấu tr&uacute;c dữ liệu chỉ ph&ugrave; hợp với một số giải thuật, khi thay đổi cấu tr&uacute;c dữ liệu th&igrave; giải thuật phải thay đổi theo.</p> <p>Kh&ocirc;ng ph&ugrave; hợp với c&aacute;c b&agrave;i to&aacute;n lớn c&oacute; nhiều module.</p> <h2>H&Agrave;M trong C</h2> <h3>Kh&aacute;i niệm về chương tr&igrave;nh</h3> <p>Một chương tr&igrave;nh bao gồm một hoặc nhiều h&agrave;m. H&agrave;m main() l&agrave; th&agrave;nh phần bắt buộc của chương tr&igrave;nh. Chương tr&igrave;nh bắt&nbsp;đầu thực hiện từ c&acirc;u lệnh đầu ti&ecirc;n của h&agrave;m main( ) cho&nbsp;đến khi gặp dấu } cuối c&ugrave;ng của h&agrave;m n&agrave;y.</p> <h3>Kh&aacute;i niệm về H&agrave;m</h3> <p>H&agrave;m l&agrave; một đoạn chương tr&igrave;nh độc lập thực hiện trọn vẹn một c&ocirc;ng việc nhất định, rồi trả về một gi&aacute; trị cho chương tr&igrave;nh gọi n&oacute;.</p> <h4>&ETH;ặc&nbsp;điểm của h&agrave;m</h4> <p>L&agrave; một&nbsp;đơn vị độc lập của chương tr&igrave;nh.</p> <p>Kh&ocirc;ng cho ph&eacute;p x&acirc;y dựng một h&agrave;m b&ecirc;n trong một h&agrave;m kh&aacute;c.</p> <h3>Tổ chức một chương tr&igrave;nh trong C</h3> <h4>Bố cục một chương tr&igrave;nh trong C</h4> <p>Một chương tr&igrave;nh C&nbsp;được tổ chức theo mẫu:</p> <p>h&agrave;m 1<br />......<br />h&agrave;m 2<br />.....<br />.....<br />h&agrave;m n</p> <p>Ở c&aacute;c vị tr&iacute; b&ecirc;n ngo&agrave;i h&agrave;m ( những vị tr&iacute; ...) ta c&oacute; thể&nbsp;đặt c&aacute;c to&aacute;n tử #include, #define, định nghĩa kiểu dữ liệu, khai b&aacute;o biến ngo&agrave;i, biến tỉnh ngo&agrave;i.</p> <h4>C&aacute;ch truyền dữ liệu giữa c&aacute;c h&agrave;m</h4> <p>Việc truyền dữ liệu v&agrave; kết quả từ h&agrave;m n&agrave;y sang h&agrave;m kh&aacute;c&nbsp;được thực hiện theo một trong hai c&aacute;ch:</p> <ul> <li>Sử dụng&nbsp;đối của h&agrave;m.</li> <li>Sử dụng biến ngo&agrave;i, biến tỉnh ngo&agrave;i.</li> </ul> <h4>C&aacute;ch hoạt động của h&agrave;m trong C</h4> <p>H&igrave;nh ảnh dưới đ&acirc;y cho bạn thấy c&aacute;ch hoạt động của h&agrave;m (chương tr&igrave;nh con) ở trong ng&ocirc;n ngữ C. Khi một lời gọi h&agrave;m được thực thi th&igrave;:</p> <p>Chương tr&igrave;nh của bạn sẽ nhảy tới nơi định nghĩa h&agrave;m đ&oacute; v&agrave; thực thi c&aacute;c lệnh từ tr&ecirc;n xuống dưới ở trong h&agrave;m đ&oacute;.</p> <p>Khi h&agrave;m thực hiện xong, chương tr&igrave;nh tiếp tục quay về thực hiện c&aacute;c lệnh ph&iacute;a sau lời gọi h&agrave;m.</p> <p><img class="alignnone" src="https://nguyenvanhieu.vn/wp-content/uploads/2019/08/bai-27-ham-trong-c-5.jpg" alt="" width="700" height="622" /></p> <h4 class="cap1">&nbsp;V&Iacute; DỤ VỀ CHƯƠNG TR&Igrave;NH C&Oacute; H&Agrave;M</h4> <p>Chương tr&igrave;nh t&iacute;nh lũy thừa 3 của x</p> <blockquote> <table border="1" width="70%" cellspacing="0" cellpadding="7"> <tbody> <tr> <td valign="TOP" height="31"><img class="alignnone wp-image-8003 size-full" src="https://tek4.vn/wp-content/uploads/2021/02/img06_02.gif" alt="" width="530" height="464" /></td> </tr> <tr> <td valign="TOP" height="31"> <p>Kết quả in ra:</p> <ul> <li>Nhap so muon tinh luy thua: 3</li> <li>Ket qua =9</li> </ul> </td> </tr> </tbody> </table> <p>Ch&uacute;ng ta sẽ kết th&uacute;c &ldquo;B&agrave;i 15. H&agrave;m trong C, đặc trưng của ng&ocirc;n ngữ hướng thủ tụ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 16. C&aacute;c kiểu h&agrave;m trong C&rdquo;.</p> <p>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> </blockquote>