Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
893,5 KB
Nội dung
Bài Những khái niệm ngôn ngữ C Mục tiêu: Kết thúc học này, bạn có thể: Phân biệt khác Câu lệnh, Chương trình Phần mềm Biết trình hình thành C Nên dùng C Nắm cấu trúc chương trình C Hiểu rõ khái niệm giải thuật (algorithms) Vẽ lưu đồ (flowchart) Liệt kê ký hiệu dùng lưu đồ Giới thiệu Ngày nay, khoa học máy tính thâm nhập vào lĩnh vực Tự động hóa ngành chủ chốt điều hướng phát triển giới Bất ngành nghề cần phải hiểu biết nhiều Cơng nghệ Thơng tin lập trình nói chung Cụ thể, C ngơn ngữ lập trình cấp cao mà lập trình viên cần phải biết Vì thế, giáo trình này, nghiên cứu chi tiết cấu trúc ngơn ngữ C Ðầu tiên tìm hiểu khác khái niệm: Lệnh (Command), Chương trình (Program) Phần mềm (Software) 1.1 Ra lệnh cho máy tính làm việc Khi máy tính khởi động, tự động thực thi số tiến trình xuất kết hình Ðiều diễn nào? Câu trả lời đơn giản nhờ vào Hệ điều hành cài đặt bên máy tính Hệ điều hành (operating system) xem phần mềm hệ thống Phần mềm khởi động máy tính thiết lập thông số ban đầu trước trao quyền cho người dùng Để làm điều này, hệ điều hành phải cấu tạo từ tập hợp chương trình Mọi chương trình cố gắng đưa lời giải cho hay nhiều toán đóMọi chương trình cố gắng đưa giải pháp cho hay nhiều vấn đề Mỗi chương trình tập hợp câu lệnh giải toán cụ thể Một nhóm lệnh tạo thành chương trình nhóm chương trình tạo thành phần mềm Những khái niệm ngôn ngữ C Để rõ hơn, xem xét thí dụ : Một người bạn đến nhà chơi mời sữa dâu Anh ta thấy ngon miệng muốn xin công thức làm Chúng ta hướng dẫn cho làm sau : Lấy sữa Đổ nước ép dâu vào Trộn hỗn hợp làm lạnh Bây bạn theo dẫn này, họ tạo sữa dâu tuyệt vời Chúng ta phân tích thị (lệnh) Lệnh : Lệnh hoàn chỉnh chưa ? Nó có trả lời câu hỏi lấy sữa ‘ở đâu’ ? Lệnh thứ hai : Một lần nữa, lệnh khơng nói rõ nước ép dâu để ‘ở đâu’ May mắn bạn đủ thơng minh để hiểu cơng thức pha chế nói trên, nhiều điểm chưa rõ ràng Do muốn phổ biến cách làm, cần bổ sung bước sau : Rót ly sữa vào máy trộn Đổ thêm vào nước dâu ép Ðóng nắp máy trộn Mở điện bắt đầu trộn Dừng máy trộn lại Nếu trộn tắt máy, ngược lại trộn tiếp Khi trộn xong, rót hỗn hợp vào tơ đặt vào tủ lạnh Ðể lạnh lúc lấy dùng So sánh hai cách hướng dẫn nêu trên, hướng dẫn thứ hai chắn hoàn chỉnh, rõ ràng hơn, đọc hiểu Tương tự, máy tính xử lý liệu dựa vào tập lệnh mà nhận Ðương nhiên thị đưa cho máy vi tính cần phải hồn chỉnh có ý nghĩa rõ ràng Những thị cần phải tuân thủ quy tắc: Tuần tự Có giới hạn Chính xác Mỗi thị tập thị gọi “câu lệnh” tập câu lệnh gọi “chương trình” Chúng ta xét trường hợp chương trình hướng dẫn máy tính cộng hai số Các lệnh chương trình : Lập trình C Nhập số thứ nhớ Nhập số thứ hai nhớ Thực phép cộng số thứ số thứ hai, nhớ kết phép cộng Hiển thị kết Kết thúc Tập lệnh tuân thủ tất quy tắc đề cập Vì vậy, tập lệnh chương trình thực thành cơng việc cộng hai số máy tính Ghi chú: Khả nhớ người biết đến trí nhớ, khả nhớ liệu đưa vào máy tính gọi “bộ nhớ” Máy tính nhận liệu thời điểm làm việc với liệu vào thời điểm khác, nghĩa máy tính ghi liệu vào nhớ sau đọc để truy xuất giá trị liệu làm việc với chúng Khi khối lượng công việc giao cho máy tính ngày nên nhiều phức tạp tất câu lệnh khơng thể đưa vào chương trình, chúng cần chia thành số chương trình nhỏ Tất chương trình cuối tích hợp lại để chúng làm việc với Một tập hợp chương trình gọi phần mềm Những khái niệm ngôn ngữ C Mối quan hệ ba khái niệm câu lệnh, chương trình phần mềm biểu diễn sơ đồ hình 1.1: Software Program Commands Program Commands Commands Hình 1.1: Phần mềm, chương trình câu lệnh 1.2 Ngôn ngữ C Vào đầu năm 70 phịng thí nghiệm Bell, Dennis Ritchie phát triển ngôn ngữ C C sử dụng lần đầu hệ thống cài đặt hệ điều hành UNIX C có nguồn gốc từ ngơn ngữ BCPL Martin Richards phát triển BCPL sau Ken Thompson phát triển thành ngôn ngữ B, người khởi thủy C Trong BCPL B không hỗ trợ kiểu liệu, C có nhiều kiểu liệu khác Những kiểu liệu gồm : kiểu ký tự (character), kiểu số nguyên (interger) kiểu số thực (float) C liên kết chặt chẽ với hệ thống UNIX khơng bị trói buộc vào máy tính hay hệ điều hành C hiệu để viết chương trình thuộc nhiều lĩnh vực khác C dùng để lập trình hệ thống Một chương trình hệ thống có ý nghĩa liên quan đến hệ điều hành máy tính hay tiện ích hỗ trợ Hệ điều hành (OS), trình thơng dịch (Interpreters), trình soạn thảo (Editors), chương trình Hợp Ngữ (Assembly) chương trình hệ thống Hệ điều hành UNIX phát triển dựa vào C C sử dụng rộng rãi tính hiệu linh hoạt Trình biên dịch (compiler) C có sẵn cho hầu hết máy tính Mã lệnh viết C máy biên dịch chạy máy khác cần thay đổi khơng thay đổi Trình biên dịch C dịch nhanh cho mã đối tượng khơng lỗi Lập trình C C thực thi nhanh hợp ngữ (Assembly) Lập trình viên tạo bảo trì thư viện hàm mà chúng tái sử dụng cho chương trình khác Do đó, dự án lớn quản lý dễ dàng mà tốn công sức 1.2.1 C – Ngôn ngữ bậc trung C hiểu ngơn ngữ bậc trung kết hợp yếu tố ngơn ngữ cấp cao chức hợp ngữ (ngôn ngữ cấp thấp) C cho phép thao tác thành phần máy tính bits, bytes, địa chỉ… Hơn nữa, mã C dễ di chuyển nghĩa phần mềm viết cho loại máy tính chạy loại máy tính khác Mặc dù C có năm kiểu liệu bản, khơng xem ngang hàng với ngơn ngữ cao cấp mặt kiểu liệu C cho phép chuyển kiểu liệu Nó cho phép thao tác trực tiếp bits, bytes, word trỏ (pointer) Vì vậy, dùng cho lập trình mức hệ thống 1.2.2 C - Ngôn ngữ cấu trúc Thuật ngữ ngôn ngữ cấu trúc khối (block-structured language) không áp dụng với C Ngôn ngữ cấu trúc khối cho phép thủ tục (procedures) hay hàm (functions) khai báo bên thủ tục hàm khác C không cho phép việc tạo hàm hàm nên khơng phải ngơn ngữ cấu trúc khối Tuy nhiên, xem ngơn ngữ cấu trúc có nhiều điểm giống với ngôn ngữ cấu trúc ALGOL, Pascal số ngôn ngữ tương tự khác C cho phép có tổng hợp mã lệnh liệu Ðiều đặc điểm riêng biệt ngôn ngữ cấu trúc Nó liên quan đến khả tập hợp ẩn dấu tất thông tin lệnh khỏi phần cịn lại chương trình để dùng cho tác vụ riêng biệt Ðiều thực qua việc dùng hàm hay khối mã lệnh (Code Block) Các hàm dùng để định nghĩa hay tách rời tác vụ yêu cầu chương trình Ðiều cho phép chương trình hoạt động đơn vị thống Khối mã lệnh nhóm câu lệnh chương trình nối kết với theo trật tự logic xem đơn vị thống Một khối mã lệnh tạo tập hợp nhiều câu lệnh dấu ngoặc mở đóng xoắn đây: { i = i + 1; Những khái niệm ngôn ngữ C } while (i < 40); Ngôn ngữ cấu trúc hỗ trợ nhiều cấu trúc dùng cho vòng lặp (loop) while, do-while, for Những cấu trúc lặp giúp lập trình viên điều khiển hướng thực thi chương trình 1.3 Cấu trúc chương trình C C có số từ khóa, xác 32 Những từ khóa kết hợp với cú pháp C hình thành ngơn ngữ C Nhưng nhiều trình biên dịch cho C thêm vào từ khóa dùng cho việc tổ chức nhớ giai đoạn tiền xử lý định Vài quy tắc lập trình C sau : - Tất từ khóa chữ thường (khơng in hoa) Ðoạn mã chương trình C có phân biệt chữ thường chữ hoa Ví dụ : while khác với DO WHILE Từ khóa khơng thể dùng cho mục đích khác đặt tên biến (variable name) tên hàm (function name) Hàm main() hàm gọi đến chương trình bắt đầu chạy (chúng ta xem xét kỹ phần sau) Xem xét đoạn mã chương trình: main () { /* This is a sample program */ int i = 0; i = i + 1; } Ghi chú: Những khía cạnh khác chương trình C xem xét qua đoạn mã Ðoạn mã xem đoạn mã mẫu, dùng lại suốt phần cịn lại giáo trình 1.3.1 Ðịnh nghĩa Hàm Lập trình C Chương trình C chia thành đơn vị gọi hàm Ðoạn mã mẫu có hàm main() Hệ điều hành trao quyền điều khiển cho hàm main() chương trình C thực thi Tên hàm theo sau cặp dấu ngoặc đơn () Trong dấu ngoặc đơn có hay khơng có tham số (parameters) 1.3.2 Dấu phân cách (Delimiters) Sau định nghĩa hàm dấu ngoặc xoắn mở { Nó thơng báo điểm bắt đầu hàm Tương tự, dấu ngoặc xoắn đóng } sau câu lệnh cuối hàm điểm kết thúc hàm Dấu ngoặc xoắn mở đánh dấu điểm bắt đầu khối mã lệnh, dấu ngoặc xoắn đóng đánh dấu điểm kết thúc khối mã lệnh Trong đoạn mã mẫu có câu lệnh dấu ngoặc xoắn Hơn nữa, hàm, dấu ngoặc xoắn dùng để phân định đoạn mã trường hợp dùng cho cấu trúc vòng lặp lệnh điều kiện 1.3.3 Dấu kết thúc câu lệnh (Terminator) Dòng int i = 0; đoạn mã mẫu câu lệnh (statement) Một câu lệnh C kết thúc dấu chấm phẩy (;) C không hiểu việc xuống dịng dùng phím Enter, khoảng trắng dùng phím spacebar hay khoảng cách dùng phím tab Có thể có nhiều câu lệnh hàng câu lệnh phải kết thúc dấu chấm phẩy Một câu lệnh không kết thúc dấu chấm phẩy xem câu lệnh sai 1.3.4 Dịng thích (Comment) Những thích thường viết để mô tả công việc lệnh đặc biệt, hàm hay tồn chương trình Trình biên dịch khơng dịch chúng Trong C, thích bắt đầu ký hiệu /* kết thúc */ Trường hợp thích có nhiều dịng, ta phải ý ký hiệu kết thúc (*/), thiếu ký hiệu này, tồn chương trình bị coi thích Trong đoạn mã mẫu dịng chữ "This is a sample program" dịng thích Trong trường hợp thích dịng ta dùng // Ví dụ: int a = 0; // Biến ‘a’ khai báo kiểu số nguyên (interger) 1.3.5 Thư viện C (Library) Tất trình biên dịch C chứa thư viện hàm chuẩn dùng cho tác vụ chung Một vài cài đặt C đặt thư viện tập tin (file) lớn đa số cịn lại chứa nhiều tập tin nhỏ Khi lập trình, hàm chứa Những khái niệm ngôn ngữ C thư viện dùng cho nhiều loại tác vụ khác Một hàm (được viết lập trình viên) đặt thư viện dùng nhiều chương trình yêu cầu Vài trình biên dịch cho phép hàm thêm vào thư viện chuẩn số khác lại yêu cầu tạo thư viện riêng 1.4 Biên dịch thực thi chương trình (Compiling and Running) Những bước khác việc dịch chương trình C từ mã nguồn thành mã thực thi thực sau : Soạn thảo/Xử lý từ Ta dùng trình xử lý từ (word processor) hay trình soạn thảo (editor) để viết mã nguồn (source code) C chấp nhận loại mã nguồn viết dạng tập tin văn chuẩn Vài trình biên dịch (compiler) cung cấp mơi trường lập trình (xem phụ lục) gồm trình soạn thảo Mã nguồn Ðây đoạn văn chương trình mà người dùng đọc Nó đầu vào trình biên dịch C Bộ tiền xử lý C Từ mã nguồn, bước chuyển qua tiền xử lý C Bộ tiền xử lý xem xét câu lệnh bắt đầu dấu # Những câu lệnh gọi thị tiền biên dịch (directives) Điều giải thích sau Chỉ thị tiền biên dịch thường đặt nơi bắt đầu chương trình đặt nơi khác Chỉ thị tiền biên dịch tên ngắn gọn gán cho tập mã lệnh Mã nguồn mở rộng C Bộ tiền xử lý C khai triển thị tiền biên dịch đưa kết Ðây gọi mã nguồn C mở rộng, sau chuyển cho trình biên dịch C Trình biên dịch C (Compiler) Trình biên dịch C dịch mã nguồn mở rộng thành ngôn ngữ máy để máy tính hiểu Lập trình C Nếu chương trình q lớn chia thành tập tin riêng biệt tập tin biên dịch riêng rẽ Ðiều giúp ích mà tập tin bị thay đổi, toàn chương trình khơng phải biên dịch lại Bộ liên kết (Linker) Mã đối tượng với thủ tục hỗ trợ thư viện chuẩn hàm dịch riêng lẻ khác kết nối lại Bộ liên kết mã thực thi Những khái niệm ngôn ngữ C Bộ nạp (Loader) Mã thực thi thi hành nạp hệ thống Tiến trình mơ tả qua lưu đồ 1.2 sau : # include file Source file Tập tin thêm vào Chương trình gốc Library File Compiler Thư viện Trình biên dịch Other Usergenerated Object File Các tập tin thực thi khác người dùng Object File Tập tin đối tượng Linker Bộ liên kết Executable File Tập tin thực thi Hình 1.2: Biên dịch thực thi chương trình 1.5 Các bước lập trình giải vấn đề Chúng ta thường gặp phải tốn Để giải tốn đó, cần hiểu chúng trước sau hoạch định bước cần làm Giả sử muốn từ phòng học đến quán ăn tự phục vụ tầng hầm Ðể thực việc cần hiểu tìm bước giải trước thực thi bước đó: BƯỚC : Rời phòng BƯỚC : Ðến cầu thang 10 Lập trình C Một cấu trúc ‘IF’ bắt đầu IF theo sau điều kiện Nếu điều kiện (thỏa điều kiện) quyền điều khiển chuyển đến câu lệnh phần thân để thực thi Nếu điều kiện sai (không thỏa điều kiện), câu lệnh phần thân không thực thi chương trình nhảy đến câu lệnh sau END IF (chấm dứt cấu trúc IF) Cấu trúc IF phải kết thúc END IF Chúng ta xem ví dụ cho cấu trúc IF Ví dụ 4: Yêu cầu: Kiểm xem số chẵn hay không hiển thị thông điệp báo số chẵn, ta xử lý sau : BEGIN INPUT num r = num MOD IF r=0 Display “Number is even” END IF END Ðoạn mã nhập số từ người dùng, thực toán tử MOD (lấy phần dư) kiểm tra xem phần dư có hay không Nếu hiển thị thông điệp, ngược lại thoát Lưu đồ cho đoạn mã giả thể qua hình 1.7 S TAR T IN P U T n u m r = n u m M OD No r =0 Yes DIS P L AY "N u m b e r is E ve n " S TOP 16 Lập trình C Hình 1.7 : Kiểm tra số chẵn Cú pháp lệnh IF C sau: if (Điều kiện) { Câu lệnh } Cấu trúc IF…ELSE Trong ví dụ 4, hay ta cho thông điệp báo số khơng số chẵn tức số lẻ thay Ðể làm điều ta thêm câu lệnh IF khác để kiểm tra xem trường hợp số khơng chia hết cho Ta xem ví dụ Example 5: BEGIN INPUT num r = num MOD IF r=0 DISPLAY “Even number” END IF IF r0 DISPLAY “Odd number” END IF END Ngơn ngữ lập trình cung cấp cho cấu trúc IF…ELSE Dùng cấu trúc hiệu tốt để giải vấn đề Cấu trúc IF …ELSE giúp lập trình viên làm phép so sánh sau thực thi bước tùy theo kết phép so sánh True (đúng) hay False (sai) Cấu trúc chung câu lệnh IF…ELSE sau: IF Điều kiện Câu lệnh ELSE Những khái niệm ngôn ngữ C 17 Câu lệnh END IF Cú pháp cấu trúc if…else C sau: if(Điều kiện) { Câu lệnh } else { Câu lệnh } Nếu điều kiện thỏa (True), câu lệnh thực thi Ngược lại, câu lệnh thực thi Không hai thực thi lúc Vì vậy, đoạn mã tối ưu cho ví dụ tìm số chẵn viết ví dụ Ví dụ 6: BEGIN INPUT num r = num MOD IF r = DISPLAY “Even Number” ELSE DISPLAY “Odd Number” END IF END Lưu đồ cho đoạn mã giả thể qua Hình 1.8 18 Lập trình C S TA R T IN P U T n u m r = n um M O D Yes No r = D IS P L AY "N u m b e r i s E ve n " D IS PL A Y " N u m b er is O d d " S TOP Hình 1.8: Số chẵn hay số lẻ Ða điều kiện sử dụng AND/OR Cấu trúc IF…ELSE làm giảm độ phức tạp, gia tăng tính hữu hiệu Ở mức độ đó, nâng cao tính dễ đọc mã Các thí dụ IF đề cập đến thời điểm đơn giản Chúng có điều kiện IF để đánh giá Thỉnh thoảng phải kiểm tra cho điều kiện, thí dụ: Ðể xem xét nhà cung cấp có đạt MVS (nhà cung cấp quan trọng nhất) không?, cơng ty kiểm tra xem nhà cung cấp có làm việc với cơng ty 10 năm khơng? có tổng doanh thu 5,000,000 khơng? Hai điều kiện thỏa mãn nhà cung cấp xem MVS Do tốn tử AND dùng câu lệnh ‘IF’ ví dụ sau: Ví dụ 7: BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 AND bizDone >=5000000 DISPLAY “Classified as an MVS” ELSE DISPLAY “A little more effort required!” END IF Những khái niệm ngơn ngữ C 19 END Ví dụ đơn giản, có điều kiện Ở tình thực tế, có nhiều điều kiện cần kiểm tra Nhưng dễ dàng dùng tốn tử AND để nối điều kiện lại giống ta làm Bây giờ, giả sử cơng ty ví dụ đổi quy định, họ định đưa điều kiện dễ dàng Như : Hoặc làm việc với cơng ty 10 năm có doanh số (giá trị thương mại,giao dịch) từ 5,000,000 trở lên Vì vâỵ, ta thay toán tử AND toán tử OR Nhớ toán tử OR cho giá trị True (đúng) cần điều kiện True Cấu trúc IF lồng Một cách khác để thực ví dụ sử dụng cấu trúc IF lồng Cấu trúc IF lồng câu lệnh IF nằm trong câu lệnh IF khác Chúng ta viết lại ví dụ sử dụng cấu trúc IF lồng ví dụ sau: Ví dụ 8: BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 IF bizDone >=5000000 DISPLAY “Classified as an MVS” ELSE DISPLAY “A little more effort required!” END IF ELSE DISPLAY “A little more effort required!” END IF END Ðoạn mã thực nhiệm vụ khơng có ‘AND’ Tuy nhiên, có lệnh IF (kiểm tra xem bizDone lớn 5,000,000 hay không?) bên lệnh IF khác (kiểm tra xem yearsWithUs lớn 10 hay không?) Câu lệnh IF kiểm tra điều kiện thời gian nhà cung cấp làm việc với cơng ty có lớn 10 năm hay không Nếu 10 năm (kết trả False), khơng cơng nhận nhà cung cấp MVS; Nếu thỏa điều kiện xét câu lệnh IF thứ hai, kiểm tra tới điều kiện bizDone lớn 5,000,000 hay không Nếu thỏa 20 Lập trình C điều kiện (kết trả True) lúc nhà cung cấp xem MVS, khơng thơng điệp báo khơng MVS Lưu đồ cho mã giả ví dụ trình bày qua hình 1.9 S TA RT INPUT y ears W ithUs INPUT bizDone Yes No yearsW ithUs >= 10 Yes No DIS PLA Y "A little m ore effor t required!" bzDone > 5000000 DIS P LAY "Class ified as an MV S " DIS PLA Y "A little m ore effor t required!" S TOP Hình 1.9: Câu lệnh IF lồng Mã giả trường hợp cấu trúc IF lồng ví dụ chưa hiệu Câu lệnh thông báo không thỏa điều kiện MVS phải viết hai lần Hơn lập trình viên phải viết thêm mã nên trình biên dịch phải xét hai điều kiện lệnh IF, lãng phí thời gian Ngược lại, dùng toán tử AND xét tới điều kiện câu lệnh IF lần Ðiều khơng có nghĩa cấu trúc IF lồng nói chung khơng hiệu Nó tùy theo tình cụ thể mà ta dùng Có dùng tốn tử AND hiệu hơn, có dùng cấu trúc IF lồng hiệu Chúng ta xét ví dụ mà dùng cấu trúc IF lồng hiệu dùng toán tử AND Những khái niệm ngôn ngữ C 21 Một công ty định phần lương cho công nhân dựa tiêu chuẩn bảng 1.1 Grade E E M M Experience 3 Salary 2000 3000 3000 4000 Bảng 1.1: Lương Vì vậy, công nhân xếp loại E có hai năm kinh nghiệm lương 2000, ba năm kinh nghiệm lương 3000 Mã giả dùng tốn tử AND cho vấn đề ví dụ 9: Ví dụ 9: BEGIN INPUT grade INPUT exp IF grade =”E” AND exp =2 salary=2000 ELSE IF grade = “E” AND exp=3 salary=3000 END IF END IF IF grade =”M” AND exp =2 salary=3000 ELSE IF grade = “M” AND exp=3 salary=4000 END IF END IF END Câu lệnh IF kiểm tra xếp loại kinh nghiệm công nhân Nếu xếp loại E kinh nghiệm năm lương 2000, ngồi xếp loại E, có năm kinh nghiệm lương 3000 22 Lập trình C Nếu điều kiện khơng thỏa câu lệnh IF thứ hai tương tự kiểm điều kiện xếp loại kinh nghiệm cho công nhân để phân định lương Giả sử xếp loại công nhân E có hai năm kinh nghiệm Lương người tính theo mệnh đề IF Phần lại câu lệnh IF thứ bỏ qua Tuy nhiên, điều kiện mệnh đề IF thứ hai xét tất nhiên khơng thỏa, kiểm tra mệnh đề ELSE câu lệnh IF thứ kết False Ðây bước thừa mà chương trình xét qua Trong ví dụ, ta có hai câu lệnh IF ta xét có hai loại E M Nếu có khoảng 15 loại tốn thời gian tài nguyên máy tính cho việc tính tốn thừa lương xác định câu lệnh IF Ðây dứt khốt khơng phải mã nguồn hiệu Bây xét mã giả dùng cấu trúc IF lồng sửa đổi ví dụ 10 Những khái niệm ngơn ngữ C 23 Ví dụ 10: BEGIN INPUT grade INPUT exp IF grade=”E” IF exp=2 salary = 2000 ELSE IF exp=3 salary=3000 END IF END IF ELSE IF grade=”M” IF exp=2 Salary=3000 ELSE IF exp=3 Salary=4000 END IF END IF END IF END IF END Ðoạn mã nhìn khó đọc Tuy nhiên, đem lại hiệu suất cao Chúng ta xét ví dụ Nếu cơng nhân xếp loại E kinh nghiệm năm lương tính 2000 bước đầu câu lệnh IF Sau đó, chương trình không cần thực thi thêm lệnh ELSE Do đó, khơng có lãng phí đoạn mã mang lại hiệu suất cho chương trình chương trình chạy nhanh Vịng lặp Một chương trình máy tính tập câu lệnh thực Nó lặp lại số bước với số lần lặp xác định theo yêu cầu toán đến số điều kiện định thỏa Chẳng hạn, ta muốn viết chương trình hiển thị tên ta lần Ta xét mã giả Ví dụ 11: 24 Lập trình C BEGIN DISPLAY DISPLAY DISPLAY DISPLAY DISPLAY END “Scooby” “Scooby” “Scooby” “Scooby” “Scooby” Nếu để hiển thị tên ta 1000 lần, ta viết DISPLAY “Scooby” 1000 lần tốn cơng sức Ta tinh giản vấn đề cách viết câu lệnh DISPLAY lần, sau đặt cấu trúc vịng lặp, thị máy tính thực lặp 1000 lần cho câu lệnh Những khái niệm ngôn ngữ C 25 Ta xem mã giả cấu trúc vịng lặp ví dụ 12 sau: Ví dụ 12: Do loop 1000 times DISPLAY “Scooby” End loop Những câu lệnh nằm Do loop End loop (trong ví dụ lệnh DISPLAY) thực thi 1000 lần Những câu lệnh với lệnh loop end loop gọi cấu trúc vịng lặp Cấu trúc vịng lặp giúp lập trình viên phát triển thành chương trình lớn yêu cầu thực thi hàng ngàn câu lệnh Do loop…end loop dạng thức tổng quát vịng lặp Ví dụ sau cách viết khác dùng cấu trúc vịng lặp Ví dụ 13: BEGIN cnt=0 WHILE (cnt < 1000) DO DISPLAY “Scooby” cnt=cnt+1 END DO END Lưu đồ cho mã giả ví dụ 13 vẽ Hình 1.10 26 Lập trình C S TA R T cn t= Yes cn t < 0 No D IS PL A Y " Sc o ob y " cn t= c n t+1 S TOP Hình 1.10: Cấu trúc vịng lặp Chú ý Hình 1.10 khơng có ký hiệu đặc biệt để biểu diễn cho vòng lặp Chúng ta dùng ký hiệu phân nhánh để kiểm tra điều kiện quản lý hướng của chương trình dịng chảy (flow_lines) Những khái niệm ngơn ngữ C 27 Tóm tắt học Phần mềm tập hợp chương trình Một chương trình tập hợp thị (lệnh) Những đoạn mã lệnh sở cho chương trình C Ngơn ngữ C có 32 từ khóa Các bước cần thiết để giải toán nghiên cứu chi tiết tốn đó, thu thập thơng tin thích hợp, xử lý thông tin đến kết Một giải thuật danh sách rút gọn logic bước để giải vấn đề Giải thuật viết mã giả lưu đồ Mã giả trình bày giải thuật ngôn ngữ tương tự mã thật Một lưu đồ trình bày dạng biểu đồ giải thuật Lưu đồ chia nhỏ thành nhiều phần đầu nối dùng cho việc nối chúng lại nơi chúng bị chia cắt Một chương trình gặp điều kiện dựa theo việc thực thi phân theo nhánh rẽ khác Cấu trúc lệnh gọi cấu trúc chọn lựa, điều kiện hay cấu trúc rẽ nhánh Cấu trúc chọn cấu trúc “IF” Cấu trúc IF …ELSE giúp lập trình viên làm so sánh đơn sau thực thi bước tùy theo kết phép so sánh True (đúng) hay False (sai) Cấu trúc IF lồng câu lệnh IF nằm câu lệnh IF khác Thông thường ta cần lặp lại số bước với số lần lặp xác định theo yêu cầu toán đến số điều kiện định thỏa Những cấu trúc giúp làm việc gọi cấu trúc vòng lặp 28 Lập trình C Kiểm tra tiến độ học tập C cho phép mã liệu Một trình bày dạng biểu đồ minh họa tính hoạt động thực thi nhằm đạt lời giải Lưu đồ giúp xem xét lại gỡ rối chương trình cách dễ dàng (True / False) Một lưu đồ có tuỳ ý số điểm bắt đầu số điểm kết thúc False) (True / Một việc thực thi câu lệnh đến điều kiện cụ thể (True) hay sai (False) Những khái niệm ngôn ngữ C 29 Bài tập tự làm Viết đoạn mã giả vẽ lưu đồ để nhập giá trị độ 0C (Celsius) chuyển sang độ 0F (Fahrenheit) [Hướng dẫn: C/5 = (F-32)/9] Viết đoạn mã giả vẽ lưu đồ để nhập điểm sinh viên cho mơn : Vật lý, Hóa học, Sinh học Sau hiển thị điểm trung bình tổng điểm 30 Lập trình C