Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
886,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 Để 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’ Những khái niệm ngôn ngữ C 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 : 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 Lập trình 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 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 Những khái niệm ngôn ngữ 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 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 : { i = i + 1; } 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; } Lập trình C 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 lại giáo trình 1.3.1 Ðịnh nghĩa Hàm 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 ln 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, toà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ố lại chứa nhiều tập tin nhỏ Khi lập trình, hàm chứa 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ừ Những khái niệm ngôn ngữ C 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 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 Lập trình 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 Object File Tập tin đối tượng Other Usergenerated Object File Các tập tin thực thi khác người dù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 toá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 BƯỚC : Xuống tầng hầm BƯỚC : Ði tiếp đến quán ăn tự phục vụ Thủ tục liệt kê tập hợp bước thực xác định rõ ràng cho việc giải vấn đề Một tập hợp bước gọi giải thuật (Algorithm hay gọi vắn tắt algo ) Một giải thuật (còn gọi thuật tốn) định nghĩa thủ tục, công thức hay cách giải vấn đề Nó gồm tập hợp bước giúp đạt lời giải Qua phần trên, thấy rõ ràng để giải toán, trước tiên ta phải hiểu tốn đó, cần tập hợp tất thông tin liên quan tới Bước kế xử lý mẩu thơng tin Cuối cùng, cho lời giải tốn Những khái niệm ngơn ngữ C Giải thuật có tập hợp bước liệt kê dạng ngơn ngữ đơn giản Rất bước hai người khác viết tương tự ngơn ngữ dùng diễn tả bước khác Do đó, cần thiết có phương pháp chuẩn mực cho việc viết giải thuật để người dễ dàng hiểu Chính , giải thuật viết cách dùng hai phương pháp chuẩn mã giả (pseudo code) lưu đồ (flowchart) Cả hai phương pháp dùng để xác định tập hợp bước cần thi hành để có lời giải Liên hệ tới vấn đề đến quán ăn tự phục vụ trên, vạch kế hoạch (thuật tốn) để đến đích Tuy nhiên, để đến nơi, phải cần thi hành bước thật Tương tự, mã giả lưu đồ đưa bước cần làm Lập trình viên phải viết mã cho việc thực thi bước qua việc dùng ngơn ngữ Chi tiết về mã giả lưu đồ trình bày 1.5.1 Mã giả (pseudo code) Nhớ mã giả mã thật Mã giả sử dụng tập hợp từ tương tự mã thật khơng thể biên dịch thực thi mã thật Chúng ta xem xét mã giả qua ví dụ sau.Ví dụ hiển thị câu 'Hello World!' Ví dụ 1: BEGIN DISPLAY 'Hello World!' END Qua ví dụ trên, đoạn mã giả phải bắt đầu với từ BEGIN START, kết thúc với từ END hay STOP Ðể hiển thị giá trị đó, từ DISPLAY WRITE dùng Khi giá trị hiển thị giá trị (khơng đổi), trường hợp (Hello World), đặt bên dấu nháy Tương tự, để nhận giá trị người dùng, từ INPUT hay READ dùng Ðể hiểu điều rõ hơn, xem xét ví dụ 2, ví dụ ta nhập hai số máy hiển thị tổng hai số Ví dụ 2: BEGIN INPUT A, B DISPLAY A + B END Trong đoạn mã giả này, người dùng nhập vào hai giá trị, hai giá trị lưu nhớ truy xuất A B theo thứ tự Những vị trí đặt tên nhớ gọi biến Chi tiết biến giải thích phần sau chương Bước đoạn mã giả hiển thị tổng hai giá trị biến A B Tuy nhiên, đoạn mã trên, ta bổ sung để lưu tổng hai biến biến thứ ba hiển thị giá trị biến ví dụ sau Ví dụ 3: BEGIN INPUT A, B Lập trình C C = A + B DISPLAY C END Một tập hợp thị hay bước mã giả gọi chung cấu trúc Có ba loại cấu trúc : tuần tự, chọn lựa lặp lại Trong đoạn mã giả ta viết trên,chúng ta dùng cấu trúc Chúng gọi thị thi hành tuần tự, sau khác điểm Hai loại cấu trúc lại đề cập chương sau 1.5.2 Lưu đồ (Flowcharts) Một lưu đồ hình ảnh minh hoạ cho giải thuật Nó vẽ biểu đồ luồng thị hay hoạt động tiến trình Mỗi hoạt động biểu diễn qua ký hiệu Ðể hiểu điều rõ hơn, xem lưu đồ hình 1.3 dùng hiển thị thông điệp truyền thống ‘Hello World!’ S TA R T DIS P L AY 'H e ll o W o rld !' STO P Hình 1.3: Lưu đồ Lưu đồ giống với đoạn mã giả bắt đầu với từ BEGIN START, kết thúc với từ END hay STOP Tương tự, từ khóa DISPLAY dùng để hiển thị giá trị đến người dùng Tuy nhiên, đây, từ khóa nằm ký hiệu Những ký hiệu khác mang ý nghĩa tương ứng trình bày bảng Hình 1.4 Hình 1.4: Ký hiệu lưu đồ Những khái niệm ngôn ngữ C Ta xét lưu đồ cho ví dụ Hình 1.5 Ký hiệu bắt đầu: Dùng để bắt đầu lưu đồ Ký hiệu xuất/nhập: Dùng để nhập hai số A, B Ký hiệu xử lý: Dùng để cộng hai số Ký hiệu xuất/nhập: Dùng để hiển thị tổng C Ký hiệu kết thúc: Dùng kết thúc lưu đồ Hình 1.5: Lưu đồ cộng hai số Tại bước mà giá trị hai biến cộng gán cho biến thứ ba xem xử lý trình bày hình chữ nhật Lưu đồ mà xét đơn giản.Thông thường, lưu đồ trải rộng nhiều trang giấy Trong trường hợp thế, biểu tượng nối dùng để điểm nối hai phần chương trình nằm hai trang Vòng tròn nối kết phải chứa ký tự số hình 1.6 Như thế, tạo liên kết giưa hai lưu đồ chưa hồn chỉnh Hình 1.6: Bộ nối Bởi lưu đồ sử dụng để viết chương trình, chúng cần trình bày cho lập trình viên hiểu chúng dễ dàng Nếu có ba lập trình viên dùng ba ngơn ngữ lập trình khác để viết mã, toán họ cần giải phải Trong trường hợp này, mã giả đưa cho lập trình viên giống ngơn ngữ lập trình họ dùng tất nhiên cú pháp khác Nhưng kết cuối Do đó, cần thiết phải hiểu rõ tốn mã giả phải viết cẩn thận Chúng ta kết luận mã giả độc lập với ngôn ngữ lập trình Vài điểm cần thiết khác phải ý vẽ lưu đồ : Lúc đầu tập trung vào khía cạnh logic tốn vẽ luồng xử lý lưu đồ Một lưu đồ phải có điểm bắt đầu (START) điểm kết thúc (STOP) 10 Lập trình C Khơng cần thiết phải mơ tả bước chương trình lưu đồ mà cần bước có ý nghĩa cần thiết Chúng ta tuân theo cấu trúc tuần tự, mà luồng thực thi chương trình qua tất thị thị Chúng ta bắt gặp điều kiện chương trình, dựa điều kiện hướng thực thi chương trình rẽ nhánh Những cấu trúc cho việc rẽ nhánh cấu trúc chọn lựa, cấu trúc điều kiện hay rẽ nhánh Những cấu trúc đề cập chi tiết sau đây: Cấu trúc IF (Nếu) Cấu trúc chọn lựa cấu trúc ‘IF’ Ðể hiểu cấu trúc xem xét ví dụ khách hàng giảm giá mua 100 đồng Mỗi lần khách hàng trả tiền, đoạn mã chương trình kiểm tra xem lượng tiền trả có q 100 đồng khơng? Nếu giảm giá 10% tổng số tiền trả, ngược lại không giảm giá Ðiều minh họa sơ lược qua mã sau: IF khách hàng mua 100 giảm giá 10% Cấu trúc dùng câu lệnh IF Hình thức chung cho câu lệnh IF (cấu trúc IF) sau: IF Điều kiện Các câu lệnh Phần thân cấu trúc IF END IF 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 Lưu đồ cho đoạn mã giả thể qua hình 1.7 Những khái niệm ngôn ngữ C 11 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 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: 12 Lập trình C IF Điều kiện Câu lệnh ELSE 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 Những khái niệm ngôn ngữ C 13 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 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 toá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) 14 Lập trình C từ 5,000,000 trở lên Vì vâỵ, ta thay tố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 đ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 Những khái niệm ngôn ngữ C 15 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 tốn tử AND 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: 16 Lập trình C 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, xếp loại E, có năm kinh nghiệm lương 3000 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 17 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: 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 18 Lập trình C 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 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 19 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 20 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 (True / False) 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 21 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 22 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 đề... 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... 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