Đăng ký Đăng nhập

Tài liệu Lap trinh ky thuat

.PDF
164
51
141

Mô tả:

TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CƠ ĐIỆN – ĐIỆN TỬ GIÁO TRÌNH LẬP TRÌNH KỸ THUẬT Biên soạn: ThS. Đỗ Bình Nguyên BIÊN HÒA, THÁNG 2 NĂM 2014 MỤC LỤC CHƯƠNG 1. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH .......................... 6 1.1. 1.1.1. 1.1.2. 1.1.3. 1.2. 1.2.1. 1.2.2. 1.3. 1.3.1. 1.3.2. 1.3.3. 1.4. Một số khái niệm ......................................................................................... 6 Thuật toán .................................................................................................. 6 Chương trình .............................................................................................. 6 Ngôn ngữ lập trình ..................................................................................... 7 Xây dựng chương trình .............................................................................. 7 Quy trình Nhập – Xử lý – Xuất (Input – Process – Output Cycle) .............. 7 Các bước xây dựng chương trình ................................................................ 8 Thể hiện thuật toán ..................................................................................... 8 Sử dụng ngôn ngữ tự nhiên......................................................................... 8 Sử dụng lưu đồ ......................................................................................... 10 Sử dụng mã giả......................................................................................... 15 Câu hỏi - Bài tập ....................................................................................... 16 CHƯƠNG 2. CÁC HỆ ĐẾM................................................................... 18 2.1. Khái niệm .................................................................................................. 18 2.2. Chuyển đổi giữa các hệ đếm ..................................................................... 19 2.2.1. 2.2.2. 2.2.3. 2.3. Biến đổi số ở hệ đếm bất kỳ sang hệ thập phân ......................................... 19 Biến đổi số ở hệ thập phân sang hệ đếm bất kỳ ......................................... 21 Biến đổi số biểu diễn trong các hệ đếm đặc biệt ....................................... 23 Câu hỏi - Bài tập ....................................................................................... 25 CHƯƠNG 3. CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ C .... 26 3.1. Tập ký tự ................................................................................................... 26 3.2. Từ khóa ..................................................................................................... 26 3.3. Chú thích ................................................................................................... 27 3.4. Chỉ thị tiền xử lý........................................................................................ 27 3.4.1. 3.4.2. Giai đoạn dịch .......................................................................................... 27 Giai đoạn liên kết ..................................................................................... 28 3.5. Biểu thức ................................................................................................... 29 3.6. Câu lệnh..................................................................................................... 30 3.7. Cụm câu lệnh ............................................................................................ 30 3.8. Các kiểu dữ liệu......................................................................................... 30 3.9. Biến ............................................................................................................ 31 3.9.1. 3.9.2. 3.9.3. 3.9.4. Khai báo biến ........................................................................................... 32 Khởi tạo biến ............................................................................................ 33 Hằng số .................................................................................................... 33 Phạm vi hoạt động của biến ...................................................................... 34 3.10. Cấu trúc chương trình .............................................................................. 35 3.11. Câu hỏi – Bài tập....................................................................................... 39 CHƯƠNG 4. CÁC TOÁN TỬ ................................................................ 41 4.1. Toán tử gán ............................................................................................... 41 4.2. Toán tử số học ........................................................................................... 41 4.3. Toán tử quan hệ ........................................................................................ 41 4.4. Toán tử logic.............................................................................................. 42 4.5. Toán tử thao tác bit................................................................................... 42 4.5.1. 4.5.2. 4.5.3. 4.5.4. 4.5.5. Toán tử AND ........................................................................................... 43 Toán tử OR .............................................................................................. 45 Toán tử XOR............................................................................................ 45 Toán tử NOT ............................................................................................ 46 Toán tử dịch bit ........................................................................................ 46 4.6. Toán tử điều kiện ...................................................................................... 47 4.7. Toán tử gán phức hợp............................................................................... 47 4.8. Toán tử tăng, giảm .................................................................................... 47 4.9. Thứ tự ưu tiên các toán tử ........................................................................ 48 4.10. Chuyển đổi kiểu dữ liệu ............................................................................ 50 4.10.1. Chuyển đổi kiểu không tường minh (Implicit type conversion) ................ 50 4.10.2. Ép kiểu (Type casting).............................................................................. 52 4.11. Câu hỏi – Bài tập....................................................................................... 52 CHƯƠNG 5. LỆNH NHẬP – XUẤT ...................................................... 54 5.1. Các thư viện nhập xuất chuẩn .................................................................. 54 5.2. Các hàm nhập xuất chuẩn ........................................................................ 54 5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.2.5. 5.3. Hàm getchar () ......................................................................................... 54 Hàm putchar () ......................................................................................... 55 Hàm getch() ............................................................................................. 55 Hàm printf() ............................................................................................. 56 Hàm scanf ................................................................................................ 63 Câu hỏi – Bài tập....................................................................................... 66 CHƯƠNG 6. CẤU TRÚC RẼ NHÁNH ................................................. 68 6.1. Lệnh if........................................................................................................ 68 6.2. Lệnh if … else ............................................................................................ 71 6.3. Lệnh switch … case ................................................................................... 79 6.4. Câu hỏi – Bài tập....................................................................................... 83 CHƯƠNG 7. LỆNH LẶP ........................................................................ 85 7.1. Lệnh for ..................................................................................................... 85 7.2. Lệnh while ................................................................................................. 93 7.3. Lệnh do … while ....................................................................................... 96 7.4. Các lệnh điều khiển vòng lặp.................................................................... 98 7.4.1. 7.4.2. 7.5. Lệnh break ............................................................................................... 98 Lệnh continue ......................................................................................... 100 Câu hỏi – Bài tập..................................................................................... 101 CHƯƠNG 8. HÀM ................................................................................ 102 8.1. Định nghĩa hàm ....................................................................................... 103 8.2. Truyền tham số cho hàm ........................................................................ 105 8.3. Sử dụng hàm ........................................................................................... 107 8.4. Macro hàm .............................................................................................. 111 8.5. Câu hỏi – Bài tập..................................................................................... 112 CHƯƠNG 9. MẢNG VÀ CHUỖI......................................................... 113 9.1. 9.1.1. 9.1.2. 9.1.3. 9.2. 9.2.1. 9.2.2. 9.3. Mảng ........................................................................................................ 113 Khái niệm ............................................................................................... 113 Khai báo mảng ....................................................................................... 113 Truy xuất mảng ...................................................................................... 114 Chuỗi ....................................................................................................... 121 Lệnh gets() ............................................................................................. 123 Hàm puts() ............................................................................................. 123 Câu hỏi – Bài tập..................................................................................... 124 CHƯƠNG 10. CON TRỎ........................................................................ 125 10.1. Khái niệm ................................................................................................ 125 10.2. Toán tử lấy địa chỉ (&)............................................................................ 125 10.3. Toán tử tham chiếu (*) ........................................................................... 127 10.4. Các phép toán trên con trỏ ..................................................................... 128 10.4.1. Phép gán................................................................................................. 128 10.4.2. Phép tăng/giảm địa chỉ ........................................................................... 128 10.4.3. Phép so sánh ........................................................................................... 130 10.5. Con trỏ mảng .......................................................................................... 130 10.6. Con trỏ không kiểu (con trỏ void) .......................................................... 132 10.7. Câu hỏi – Bài tập..................................................................................... 133 CHƯƠNG 11. DỮ LIỆU TỰ TẠO ......................................................... 135 11.1. Struct (Cấu trúc) ..................................................................................... 135 11.1.1. 11.1.2. 11.1.3. 11.1.4. Khai báo struct ....................................................................................... 135 Lệnh typedef .......................................................................................... 136 Sử dụng struct ........................................................................................ 137 Con trỏ tới struct .................................................................................... 140 11.2. Union (Hợp) ............................................................................................ 142 11.2.1. Khai báo union ....................................................................................... 142 11.2.2. Sử dụng union ........................................................................................ 143 11.3. Enum (Kiểu liệt kê) ................................................................................. 144 11.4. Câu hỏi – Bài tập..................................................................................... 147 Chương 1. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH 1.1. Một số khái niệm 1.1.1. Thuật toán Là tập hợp (dãy) hữu hạn các chỉ thị (hành động) được định nghĩa rõ ràng nhằm giải quyết một bài toán cụ thể nào đó. Nêu thuật toán giải phương trình bậc nhất: ax + b = 0 (với a, b ∈ R) Thuật toán để giải phương trình như sau: • Nếu a = 0 o b = 0 thì phương trình có vô số nghiệm o b ≠ 0 thì phương trình vô nghiệm • Nếu a ≠ 0 thì phương trình có nghiệm duy nhất là x = -b/a Thuật toán có năm tính chất sau: • Tính chính xác: thuật toán phải đảm bảo cho kết quả tính toán hay các thao tác mà máy tính thực hiện được là chính xác. • Tính rõ ràng: Thuật toán phải được thể hiện bằng các câu lệnh minh bạch; các câu lệnh được sắp xếp theo thứ tự nhất định. • Tính khách quan: Một thuật toán dù được viết bởi nhiều người trên nhiều máy tính khác nhau vẫn phải cho kết quả như nhau. • Tính phổ dụng: Thuật toán không chỉ áp dụng cho một bài toán nhất định mà có thể áp dụng cho một lớp các bài toán có đầu vào tương tự nhau. • Tính kết thúc: Thuật toán phải gồm một số hữu hạn các bước tính toán. 1.1.2. Chương trình Là một tập hợp các mô tả, các phát biểu, nằm trong một hệ thống qui ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển máy tính làm việc. Theo Niklaus Wirth thì: Chương trình = Thuật toán + Cấu trúc dữ liệu Các thuật toán và chương trình đều có cấu trúc dựa trên 3 cấu trúc điều khiển cơ bản: • Tuần tự (Sequential): Các bước thực hiện tuần tự một cách chính xác từ trên xuống, mỗi bước chỉ thực hiện đúng một lần. Trang 6 • Chọn lọc (Selection): Chọn 1 trong 2 hay nhiều thao tác để thực hiện. • Lặp lại (Repetition): Một hay nhiều bước được thực hiện lặp lại một số lần. 1.1.3. Ngôn ngữ lập trình Ngôn ngữ lập trình là hệ thống các ký hiệu tuân theo các qui ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng thành các chương trình cho máy tính. Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể(ví dụ Pascal, C, Visual Basic…) gọi là chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi được trên máy tính. 1.2. Xây dựng chương trình 1.2.1. Quy trình Nhập – Xử lý – Xuất (Input – Process – Output Cycle) Quy trình xử lý cơ bản của máy tính gồm có các bước: nhập, xử lý, xuất (thường gọi tắt là quy trình I-P-O) • Bước Nhập (Input): là bước đưa các thông tin cần xử lý vào hệ thống. Các thông tin này bao gồm thông tin do người dùng mới nhập vào và thông tin đã lưu trữ từ trước. • Bước Xử lý (Process): Thực hiện một số thao tác nào đó tương ứng với dữ liệu nhập vào • Bước Xuất (Output): Đưa dữ liệu ra cho người sử dụng INPUT PROCESS OUTPUT Hình 1.1 Quy trình Nhập – Xử lý – Xuất Trong thực tế, ta có thể áp dụng quy trình này để phân tích khá nhiều quy trình khác nhau. Xem một số ví dụ sau đây Quy trình I-P-O để pha chế một ly nước chanh NHẬP XỬ LÝ XUẤT Chanh, đường Cho chanh, đường vào ly Nước chanh sẵn sàng để uống Khuấy đều Quy trình hoạt động của một chiếc máy giặt NHẬP XỬ LÝ Trang 7 XUẤT Quần áo dơ Giặt Nước Sấy Quần áo sạch Bột giặt Quy trình xử lý của chương trình soạn thảo trên máy tính NHẬP XỬ LÝ XUẤT Phím bấm trên bàn Kết hợp các ký tự thành Các từ hiển thị trên màn phím các từ hình hoặc xuất ra máy in Các bước giải phương trình bậc nhất ax + b = 0 NHẬP Hệ số a, b 1.2.2. XỬ LÝ Lấy –b chia cho a XUẤT Nghiệm x Các bước xây dựng chương trình Bước 1: Phân tích vấn đề và xác định các đặc điểm của nó (Xác định I-P-O của chương trình) Bước 2: Lập ra giải pháp. Thuật toán để giải quyết vấn đề được xác định ở bước này. Ta có thể dùng ngôn ngữ tự nhiên, lưu đồ hoặc mã giả để thể hiện thuật toán. Bước 3: Cài đặt hay còn gọi là viết chương trình. Nếu như ở bước 2, các thuật toán còn ở mức độ một ý tưởng để giải quyết vấn đề thì ở bước này ta phải thể hiện các thuật toán đưa ra ở bước 2 bằng một ngôn ngữ lập trình nào đó. Bước 4: Biên dịch và chạy thử chương trình nhằm loại bỏ các lỗi cú pháp Bước 5: Kiểm chứng và hoàn thiện chương trình. Bước này yêu cầu người lập trình phải thử nghiệm bằng nhiều số liệu và đánh giá nhằm loại bỏ các lỗi logic. 1.3. Thể hiện thuật toán Để có thể truyền đạt thuật toán cho người khác hoặc chuyển thuật toán thành chương trình máy tính thì ta phải có phương pháp biểu diễn thuật toán. Có ba phương pháp để biểu diễn thuật toán đó là: • Dùng ngôn ngữ tự nhiên • Dùng lưu đồ (flowchart) • Dùng mã giả (pseudocode) 1.3.1. Sử dụng ngôn ngữ tự nhiên Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, người ta sử dụng ngôn ngữ thường ngày để liệt kê các bước của thuật toán. Phương pháp biểu diễn này không Trang 8 yêu cầu người viết thuật toán cũng như người đọc thuật toán phải nắm các quy tắc. Tuy vậy, cách biểu diễn này thường dài dòng, không thể hiện rõ cấu trúc của thuật toán, đôi lúc gây hiểu lầm hoặc khó hiểu cho người đọc. Gần như không có một quy tắc cố định nào trong việc thể hiện thuật toán bằng ngôn ngữ tự nhiên. Tuy vậy, để dễ đọc, ta nên viết các bước con lùi vào bên phải và đánh số bước theo quy tắc phân cấp như 1, 1.1, 1.1.1, ... Thuật toán giải phương trình bậc 2: ax2 + bx + c = 0 (a ≠ 0) 1. Xác định giá trị của ba hệ số a, b, c 2. Nếu a = 0 thì 2.1. Yêu cầu đầu vào không đảm bảo 2.2. Kết thúc thuật toán 3. Trường hợp a ≠ 0 thì 3.1. Tính giá trị ∆ = b2 – 4ac 3.2. Nếu ∆ > 0 thì 3.2.1. Phương trình có hai nghiệm phân biệt x1 và x2 3.2.2. Giá trị của hai nghiệm được tính theo công thức = 3.3. − + √∆ 2 = 3.2.3. Kết thúc thuật toán Nếu ∆ = 0 thì 3.3.1. Phương trình có nghiệm kép x0 3.3.2. Giá trị của nghiệm kép được tính theo công thức = 3.4. − − √∆ 2 − 2 3.3.3. Kết thúc thuật toán Nếu ∆ < 0 thì 3.4.1. Phương trình vô nghiệm 3.4.2. Kết thúc thuật toán Có n hộp có khối lượng khác nhau và một cái cân dĩa. Hãy chỉ ra cách cân để tìm được hộp có trọng lượng nặng nhất. 1. Nếu chỉ có 1 hộp (n=1) thì 1.1. Hộp đó chính là hộp nặng nhất. 1.2. Kết thúc thuật toán. 2. Ngược lại nếu có từ hai hộp trở lên (n>1) 2.1. Chọn hai hộp bất kỳ và đặt lên bàn cân. 2.2. Giữ lại hộp nặng hơn, cất hộp nhẹ hơn sang chỗ khác. Trang 9 3. Nếu còn hộp chưa được cân thực hiện các bước sau, nếu không còn hộp nào nữa, sang bước 5. 3.1. Chọn một hộp bất kỳ và để lên dĩa cân còn trống. 3.2. Giữ lại hộp nặng hơn, cất hộp nhẹ hơn sang chỗ khác. 4. Trở lại bước 3. Hộp còn lại trên cân chính là hộp nặng nhất. Kết thúc. 1.3.2. Sử dụng lưu đồ Để dễ diễn đạt các thuật toán hơn, các nhà lập trình đưa ra dạng lưu đồ để minh họa từng bước quá trình xử lý một vấn đề. Lưu đồ là một loại sơ đồ biểu diễn một thuật toán hoặc một quá trình, biểu hiện các bước công việc dưới dạng các loại hình hộp khác nhau theo thứ tự được biểu diễn bởi các mũi tên. Sơ đồ này có thể thể hiện giải pháp cho vấn đề cần giải quyết từng bước từng bước một. Các bước quá trình được biểu diễn dưới dạng các hình hộp được nối với nhau bằng các mũi tên để thể hiện các bước xử lý một vấn đề cần xử lý. Lưu đồ được dùng trong phân tích, thiết kế, phân loại hoặc quản lí công việc hoặc chương trình trong nhiều lĩnh vực khác nhau. Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác: Thao tác chọn lựa và Thao tác hành động. • Thao tác chọn lựa: Thao tác này thực hiện chọn lựa dựa theo một điều kiện nào đó. Chẳng hạn : thao tác "nếu a = b thì thực hiện thao tác B2, ngược lại thực hiện B4" là thao tác chọn lựa. • Các thao tác còn lại không thuộc loại chọn lựa được xếp vào loại hành động. Chẳng hạn, "Chọn một hộp bất kỳ và để lên dĩa cân còn trống." là một thao tác thuộc loại hành động. Các ký hiệu thường dùng để biểu diễn lưu đồ gồm có các ký hiệu cho trong Bảng 1.1 Bảng 1.1 Các ký hiệu để biểu diễn lưu đồ HÌNH DẠNG HOẠT ĐỘNG Dữ liệu vào/Ra (Input/Output) Xử lý (Process) Chọn lựa (Decision) Trang 10 Đường đi (Route) Điểm cuối (Terminator) Điểm ghép nối cùng trang (On-page Connector) Điểm ghép nối sang trang (Off-page Connector) 1.3.2.1. Thao tác chọn lựa (Decision): Thao tác này được biểu diễn bằng một hình thoi, bên trong chứa biểu thức điều kiện ∆>0 A=B 1.3.2.2. Thao tác xử lý (Process) Thao tác này được biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung xử lý Chọn một hộp Tính nghiệm đơn bất kỳ 1.3.2.3. Đường đi (Route) Hai bước kế tiếp nhau được nối bằng một mũi tên để chỉ hướng thực hiện. Chẳng hạn trong Error! Reference source not found., trình tự thực hiện sẽ là Bước1, Bước 2, Bước 3. Trang 11 Bước 1 Bước 2 Bước 3 Từ thao tác chọn lựa có thể có đến hai hướng đi, một hướng ứng với điều kiện thỏa và một hướng ứng với điều kiện không thỏa. Do vậy, ta dùng hai hai mũi tên xuất phát từ các đỉnh hình thoi, trên mỗi mũi tên có ký hiệu Ð/Ðúng/Y/Yes/T/True để chỉ hướng đi ứng với điều kiện thỏa và ký hiệu S/Sai/N/No/F/False để chỉ hướng đi ứng với điều kiện không thỏa. ∆>0 Yes Tính 2 nghiệm phân biệt x1, x2 No ∆=0 Yes Tính nghiệm kép x0 No Phương trình vô nghiệm 1.3.2.4. Dữ liệu vào ra (Data In/Out) Hình dạng của khối này trong nhiều tài liệu có thể khác nhau, tuy nhiên, thường thấy nhất là dạng hình bình hành, bên trong chứa các dữ liệu cần nhập vào hoặc xuất ra. Trang 12 Nhập Tên, tuổi, địa chỉ Nhập a, b, c Hiển thị Nghiệm phương trình 1.3.2.5. Điểm cuối (Terminator) Ðiểm cuối là điểm khởi đầu và kết thúc của thuật toán, được biểu diễn bằng hình ovan, bên trong có ghi chữ bắt đầu/start/begin hoặc kết thúc/stop/end. Ðiểm cuối chỉ có cung đi ra (điểm khởi đầu) hoặc cung đi vào (điểm kết thúc). Begin Nhập a, b, c ∆ = b2 – 4ac ∆>0 Yes No ∆=0 Yes No Phương trình vô nghiệm End Trang 13 1.3.2.6. Điểm nối Điểm nối được dùng để nối các phần khác nhau của lưu đồ lại với nhau. Có hai loại điểm nối: • Điểm nối cùng trang (On-page Connector): Dùng để nối các phần của lưu đồ trên cùng trang giấy. Điểm nối cùng trang có dạng hình tròn, bên trong đặt một ký hiệu để biết sự liên hệ giữa các điểm nối. Hai điểm có cùng ký hiệu thì được hiểu là nối với nhau Begin 1 2 Nhập a, b, c ∆=0 Yes ∆ = b2 – 4ac No ∆>0 No Yes Phương trình vô nghiệm 2 End 1 • Điểm nối sang trang (Off-page Connector): Khi lưu đồ quá lớn phải vẽ trên nhiều trang thì ta sẽ dùng ký hiệu này để nối các phần của lưu đồ ở các trang khác nhau lại với nhau. Bên trong ký hiệu này ta cũng đặt một ký hiệu cho biết sự liên hệ giữa các điểm nối trên các trang. Hai điểm nối có cùng ký hiệu sẽ được hiểu là nối với nhau Trang 14 Bước n #1 Trang 1 Trang 2 #1 Bước n + 1 Khi vẽ lưu đồ, ta nên tuân theo một số quy tắc sau: • Trước tiên hãy tập trung vẽ một số đường đi chính của lưu đồ, sau đó hãy thêm vào tất cả các nhánh và vòng lặp. • Một lưu đồ chỉ có một điểm Bắt đầu và một điểm Kết thúc. • Mỗi bước trong chương trình không cần thể hiện trong lưu đồ. • Lưu đồ cần phải đáp ứng được yêu cầu: những người lập trình khác có thể hiểu lưu đồ một cách dễ dàng 1.3.3. Sử dụng mã giả Tuy sơ đồ khối thể hiện rõ quá trình xử lý và sự phân cấp các trường hợp của thuật toán nhưng lại cồng kềnh. Ðể mô tả một thuật toán nhỏ ta phải dùng một không gian rất lớn. Hơn nữa, lưu đồ chỉ phân biệt hai thao tác là rẽ nhánh (chọn lựa có điều kiện) và thao tác xử lý nhưng trong thực tế, các thuật toán còn có thêm các thao tác lặp (Chúng ta sẽ tìm hiểu về thao tác lặp trong các phần sau). Trang 15 Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn ngữ lập trình nào đó để thể hiện thuật toán. Tất nhiên, mọi ngôn ngữ lập trình đều có những thao tác cơ bản là xử lý, rẽ nhánh và lặp. Dùng mã giả vừa tận dụng được các khái niệm trong ngôn ngữ lập trình, vừa giúp người cài đặt dễ dàng nắm bắt nội dung thuật toán. Tuy nhiên, trong mã giả ta vẫn dùng một phần ngôn ngữ tự nhiên. Sau đây là một đoạn mã giả của giải thuật giải phương trình bậc hai. Đoạn mã giả này được vay mượn từ cú pháp của ngôn ngữ Pascal if Delta > 0 then begin x1=(-b-sqrt(delta))/(2*a) x2=(-b+sqrt(delta))/(2*a) xuất kết quả : phương trình có hai nghiệm: x1 và x2 end else if delta = 0 then xuất kết quả : phương trình có nghiệm kép là -b/(2*a) else {trường hợp delta < 0 } xuất kết quả : phương trình vô nghiệm 1.4. Câu hỏi - Bài tập Thiết kế lưu đồ giải thuật để giải quyết các yêu cầu sau: 1. Xác định vị trí (thuộc góc phần tư thứ mấy) của một góc. Nhập vào một góc (theo độ ): 95 Thuộc góc phần tư thứ 2 2. Xác định số ngày của một tháng nào đó trong một năm không phải năm nhuận. Nhập vào một tháng: 10 Tháng 10 có 31 ngày! 3. Kiểm tra xem 3 số thực a, b, c có thể là độ dài 3 cạnh của một tam giác không. Nhập vào 3 số thực: - a = 3 - b = 4 - c = 5 Đây có thể là độ dài 3 cạnh của một tam giác. 4. Tìm ước chung lớn nhất của hai số nguyên dương. Nhập a: 20 Nhập b: 15 UCLN(a,b): 5 5. Tính X(n) = 1 + 2 + 3 + … + n Nhập n (n>0): 3 X(3) = 6 6. Tính Y(n) = 1 × 2 × 3 × … × n Trang 16 Nhập n (n>0): 4 Y(3) = 24 7. Tính Z(n) = 2 + 4 + 6 + … + 2n Nhập n (n>0): 3 Z(3) = 12 8. Tính A(n) = 1 × 3 × 5 × … × (2n+1) Nhập n (n>0): 3 A(3) = 105 9. Tính C(n) = 12 + 22 + 32 + … + n2 Nhập n (n>0): 3 C(3) = 14 10. Tính B(n) = 1 – 2 + 3 – 4 + … + (-1)n+1n Nhập n (n>0): 3 B(3) = 2 11. Tính D(n) = 1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n), với n > 0 Nhập n (n>0): 3 D(3) = 10 12. Tính trung bình cộng của n số thực được nhập từ bàn phím. Nhập một số (nhập 0 Nhập một số (nhập 0 Nhập một số (nhập 0 Nhập một số (nhập 0 Trung bình cộng của để dừng): để dừng): để dừng): để dừng): 3 số thực 3 4 5 0 trên là: 4 Trang 17 Chương 2. CÁC HỆ ĐẾM 2.1. Khái niệm Hệ đếm là tập các ký hiệu và quy tắc sử dụng tập ký hiệu đó để biểu diễn và xác định giá trị các số. Mỗi ký hiệu đại diện cho một giá trị duy nhất và không phụ thuộc vào vị trí của nó xuất hiện ở đâu trong biểu diễn. Số lượng các chữ số được sử dụng trong một hệ đếm gọi là cơ số của hệ đếm. Thông thường, ta hay dùng hệ thập phân (hay hệ đếm cơ số 10. Tiếng Anh: Decimal). Đây là một hệ đếm có 10 ký tự (0,1, 2, 3, 4, 5, 6, 7, 8, 9) dùng chỉ số lượng. Những con số này còn được dùng cùng với dấu phân cách thập phân – để định vị phần thập phân sau hàng đơn vị. Con số còn có thể được dẫn đầu bằng các ký hiệu “+” hay “-” để biểu đạt số dương và số âm. Hệ đếm thập phân chỉ là một trường hợp riêng khi chọn cơ số là 10. Thực ra, bất kì một số tự nhiên b nào lớn hơn 1 đều có thể chọn làm cơ số cho hệ đếm. Các kí hiệu được dùng cho hệ đếm đó sẽ là ký hiệu đại diện cho các giá trị: 0, 1..., b-1. Trong lập trình, ta sẽ thường xuyên sử dụng các hệ đếm: • Hệ nhị phân (hệ đếm cơ số 2. Tiếng Anh: Binary): là hệ đếm dùng hai ký tự để biểu đạt một giá trị số, hai ký tự đó là 0 và 1. Chúng thường được dùng để biểu đạt hai giá trị hiệu điện thế tương ứng (có hiệu điện thế hoặc hiệu điện thế cao là 1, không có hoặc thấp là 0). Do có ưu điểm tính toán đơn giản, dễ dàng thực hiện về mặt vật lý nên hệ nhị phân trở thành hệ đếm cơ bản trong máy tính điện tử. • Hệ thập lục phân (hệ đếm cơ số 16. Tiếng Anh: Hexadecimal do đó đôi khi còn được gọi là số HEX): gồm 16 chữ số: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (các chữ cái có thể viết thường hoặc viết hoa đều được) Số thập phân 79, với biểu thị nhị phân là 01001111, có thể được viết thành 4F trong hệ thập lục phân (4 = 0100, F = 1111). (Bảng 2.1 cho ta các giá trị tương ứng của 16 số đầu tiên trong các hệ thập phân, nhị phân, thập lục phân). Theo quy ước chung, ta phải viết thêm phần chỉ số để cho biết số đó được biểu diễn ở hệ đếm nào. • Số được viết trong hệ nhị phân sẽ được viết thêm ký tự B hoặc “BIN” hoặc số 2 vào phía sau • Số được viết trong hệ thập lục phân sẽ được viết thêm ký tự H hoặc “HEX” hoặc số 16 vào phía sau Trang 18 • Số được viết trong hệ thập phân sẽ được viết thêm ký tự D hoặc d (viết tắt của từ tiếng anh Decimal) hoặc số 10 phía sau. Tuy nhiên, do hệ thập phân là hệ đếm mà ta thường dùng nên ta có thể không cần viết thêm ký hiệu này. • Số thập phân: 102 = 102D = 102d = 10210 • Số nhị phân 1011B = 1011BIN = 10112 • Số thập lục phân: 2E3AH = 2E3AHEX = 2E3A16 Bảng 2.1 Biểu diễn của các số từ 0 – 15 trong các hệ thập phân, nhị phân và thập lục phân Thập phân Nhị phân Thập lục phân Thập phân Nhị phân Thập lục phân 0 0000 0 8 1000 8 1 0001 1 9 1001 9 2 0010 2 10 1010 A 3 0011 3 11 1011 B 4 0100 4 12 1100 C 5 0101 5 13 1101 D 6 0110 6 14 1110 E 7 0111 7 15 1111 F 2.2. Chuyển đổi giữa các hệ đếm 2.2.1. Biến đổi số ở hệ đếm bất kỳ sang hệ thập phân Nếu một số N trong hệ đếm cơ số b nếu có biễu diễn là : N = dn dn-1 dn-2 ... d1 d0 , d -1 d -2 ... d –m (2.1) thì giá trị của N trong hệ thập phân (hệ đếm cơ số 10) được tính theo công thức: N = dn bn + dn-1 bn-1 +...+ d0 b0 + d-1 b-1+... + d-m b-m (2.2) Ở đây các di thỏa mãn điều kiện 0 ≤ di < b còn n là số lượng các chữ số bên trái, và m là số lượng các chữ số bên phải dấu phân chia phần nguyên và phần lẻ của số N. Trang 19 Tính giá trị trong hệ thập phân của số thập phân (cơ số 10) N = 2014. Ta có: • d1 = 1 • d0 = 4 • b = 10 • d3 = 2 • d2 = 0 Theo công thức (2.1), giá trị của số này sẽ là: N = 2.103 + 0.102 + 1.101 + 4.100 = 2014 Tính giá trị trong hệ thập phân của số nhị phân (cơ số 2) N = 10110. Ta có: • d2 = 1 • d1 = 1 • d0 = 0 • b=2 • d4 = 1 • d3 = 0 Theo công thức (2.1), giá trị của số này sẽ là: N = 1.24 + 0.23 + 1.22 + 1.21 + 0.20 = 22 Tính giá trị trong hệ thập phân của số nhị phân (cơ số 2) N = 10110,101. Ta có: • • • • • • • • • b=2 d4 = 1 d3 = 0 d2 = 1 d1 = 1 d0 = 0 d-1 = 1 d-2 = 0 d-3 = 1 Theo công thức (2.1), giá trị của số này sẽ là: N = 1.24 + 0.23 + 1.22 + 1.21 + 0.20 + 1.2-1 + 0.2-2 + 1.2-3 = 22,625 Tính giá trị trong hệ thập phân của số thập lục phân (cơ số 16) N = D3F,416 Để thực hiện yêu cầu này, ta cần chú ý quy đổi các chữ số trong hệ thập lục phân về các chữ số trong hệ thập phân dựa vào Bảng 2.1. Như vậy, ta có: • b = 16 • d2 = D16 = 1310 • d1 = 316 = 310 • d0 = F16 = 1510 • d -1 = 416 = 410 Trang 20
- Xem thêm -

Tài liệu liên quan