Bài giảng Kỹ thuật lập trình - Chương 1: Máy tính và lập trình - Nguyễn Thanh Tùng

nMáy tính là thiết bị có khả năng thực hiện tính toán và ra quyết định

nMáy tính xử lý dữ liệu bằng một chuỗi của các lệnh được gọi là chương trình máy tinh.

nHiện nay, máy tính có mặt trong rất nhiều thiết bị với những bề ngoài khác nhau, như, xe hơi, đồng hồ, điện thoại, máy tính phổ thông, v.v.

pptx 48 trang xuanthi 27/12/2022 1440
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 1: Máy tính và lập trình - Nguyễn Thanh Tùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pptxbai_giang_ky_thuat_lap_trinh_chuong_1_may_tinh_va_lap_trinh.pptx

Nội dung text: Bài giảng Kỹ thuật lập trình - Chương 1: Máy tính và lập trình - Nguyễn Thanh Tùng

  1. Nội dung ◼ Tổ chức máy tính ◼ Ngôn ngữ lập trình ◼ Các công việc trong lập trình ◼ Dữ liệu và giải thuật Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 2 © 2016
  2. Tổ chức máy tính Phần cứng và phần mềm ◼ Hai thành phần cơ bản của máy tính là: phần cứng (Hardware) và phần mềm (Software) ◼ Phần cứng: ◼ Có tổ chức như nói ở những slides tiếp theo ◼ Thiết bị điển hình: bàn phím (keyboard), màn hình (screen), v.v. ◼ Phần mềm: ◼ Hệ điều hành (Operating System) ◼ Là một hệ thống điều khiển được phần cứng và làm trung gian giữa phần cứng và các chương trình máy tính khác chạy trên máy tính. ◼ Chương trình máy tính (Computer Program) ◼ Gồm những chuỗi lệnh để tính toán, xử lý dữ liệu và cho ra kết quả hay quyết định Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 4 © 2016
  3. Tổ chức máy tính Thành phần cơ bản của mọi máy tính 3. Bộ nhớ & Memory Unit ◼ Đây là những thiết bị giúp máy tính lưu trữ thông tin tạm thời trong quá trình tính toán ◼ Các thiết bị điển hình: ◼ RAM (random access memory). 4. Bộ toán học và logic & Arithmetic and Logic Unit (ALU) ◼ Đây là những thiết bị giúp máy tính thực hiện tính toán toán học và các quyết định logic. Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 6 © 2016
  4. Tổ chức máy tính Thành phần cơ bản của mọi máy tính Để điều khiển các thiết bị phần cứng như hình bên, chúng ta cần chương trình máy tính Để tạo ra chương trình máy tính, chúng ta cần ngôn ngữ lập trình. Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 8 © 2016
  5. Hệ thống số - Hệ cơ số 2 ◼ Biểu diễn hệ nhị phân ◼ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, , 19, 20, , 99, 100, (cơ số 10) ◼ 0, 1, 10, 11, 100, 101, 110, 111, 1000, (cơ số 2) ◼ Tại sao sử dụng hệ cơ số 2 mà không dùng hệ cơ số 10 ◼ Chế tạo linh kiện có 2 trạng thái dễ hơn linh kiện 10 trạng thái. ◼ Chỉ cần hai con số (0, 1) có thể biểu diễn tất cả các giá trị Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 10 © 2016
  6. Hệ thống số - Hệ cơ số 2 31 0 Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 12 © 2016
  7. Hệ thống số - Hệ cơ số 2 ◼ Cách chuyển từ hệ cơ số 2 sang hệ cơ số 10 011012 = 8 + 4 + 1 = 16×0 + 8×1 + 4×1 + 2×0 + 1×1= 24×0 + 23×1 + 22×1 + 21×0 + 20×1 6 5 4 3 2 1 0 11001012 = 1x2 + 1x2 + 0x2 + 0x2 + 1x2 + 0x2 + 1x2 = 64 + 32 + 4 + 1 = 101 Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 14 © 2016
  8. Hệ thống số - Hệ cơ số 2 ◼ Lưu trữ chương trình và dữ liệu trong bộ nhớ: chương trình là tập hợp những câu lệnh, mỗi câu lệnh được mã hóa thành chuỗi bit chứa 0, 1 → Bật tắt công tắc 0 1 2 ◼ Đơn vị nhỏ nhất là 1 bit (1 công tắc) ◼ Bộ nhớ được đánh địa chỉ theo byte (8 bit = 1 byte) 11 12 Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 16 © 2016
  9. Hệ thống số - Hệ cơ số 16 ◼ Biểu diễn hệ cơ số 16 0, 1, , 9, A, B, C, D, E, F, 10, 11, , 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, , 2F, ◼ Tại sao sử dụng hệ cơ số 16 ◼ Hệ cơ số càng lớn thì sử dụng ít chữ. Ví dụ giá trị 118 biểu diễn bằng hệ cơ số 10, chỉ sử dụng 3 chữ số; trong khi đó sử dụng hệ cơ số 2 phải cần 7 chữ số (1110110). ◼ Chuyển đổi qua lại giữa hệ cơ số 16 và hệ cơ số 2 rất thuận tiện Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 18 © 2016
  10. Hệ thống số - Hệ cơ số 16 ◼ Cách chuyển đổi qua lại giữa hệ cơ số 16 và hệ cơ số 10 ◼ Tương tự như cách chuyển đổi qua lại giữa hệ cơ số 2 và hệ cơ số 10. Số dư 4225 ÷ 16 = 264 1 264 ÷ 16 = 16 8 16 ÷ 16 = 1 0 1 ÷ 16 = 0 1 4225 = (1081)16 Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 20 © 2016
  11. Ngôn ngữ lập trình Tổng quan ◼ Ngôn ngữ lập trình (Programming language) ◼ Là một ngôn ngữ hình thức (formal language), khác với ngôn ngữ tự nhiên (natural language), như ngôn ngữ lập trình C sẽ được học ở những chương trình ◼ Mục đích: cho phép con người (lập trình viên) tạo ra chương trình máy tính ◼ Ba kiểu ngôn ngữ lập trình chính 1. Ngôn ngữ máy (Machine Language) 2. Ngôn ngữ Assembly (Hợp ngữ, Assembly Language) 3. Ngôn ngữ cấp cao (High-level Language) Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 22 © 2016
  12. Ngôn ngữ lập trình Các loại ◼ Ngôn ngữ Assembly ◼ Sử dụng các từ viết tắc trong tiếng Anh để biểu diễn các tác vụ tính toán cơ bản ◼ Bộ chuyển ngữ (sang mã máy) cho ngôn ngữ này là “Assembler”. ◼ Ngày nay, ngôn ngữ này vẫn còn được sử dụng, và thường kết hợp với ngôn ngữ cấp cao. Nó được dùng để tối ưu một số khối xử lý trong toàn bộ chương trình. ◼ Ví dụ: LOAD BASEPAY ADD OVERPAY STORE GROSSPAY Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 24 © 2016
  13. Ngôn ngữ lập trình Ngôn ngữ lập trình C++ ◼ Viết tắt trong môn học ◼ Ngôn ngữ C++ ◼ Hay ngắn gọn: C++ ◼ Lịch sử C ◼ Tiến hóa từ ngôn ngữ lập trình trước đó là “B” và “BCPL” ◼ “Traditional C” là một tiến hóa của C vào khoảng gần 1970 ◼ Có nhiều biến thể của C tồn tại và chúng không tương thích nhau, i.e., bộ chuyển ngữ không hiểu mã nguồn C được viết cho bộ chuyển ngữ khác. ◼ “Standard C” xuất hiện vào khoảng 1989, cập lại vào khoảng 1999. Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 26 © 2016
  14. Ngôn ngữ lập trình Ngôn ngữ lập trình C ◼ C và ngôn ngữ mở rộng của nó (là C++) ◼ C là nền tảng của ngôn ngữ mở rộng của nó là C++, khá nổi tiếng ◼ C++ bổ sung thêm vào C những khả năng mới giúp dễ dàng tổ chức các chương trình lớn. Những tính năng khác, C++ dùng của C. Do đó, dùng được C là nền tảng để học C++ ◼ Những tính năng mới ◼ Tham khảo (reference): Một chức năng mới cho phép truy xuất một vùng nhớ qua một tên gọi khác. ◼ Hướng đối tượng (Object-Oriented): Đây là bổ sung quan trọng nhất, hướng đến một triết lý lập trình khác. Ở đó, chương trình là tập các đối tượng tương tác nhau để hoàn thành công việc. Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 28 © 2016
  15. Các công việc trong lập trình Tạo lập chương trình Thư viện Thư viện (Header: *.h) (Object code: *.lib; *.dll; *.so) Bộ soạn Bộ tiền Bộ biên Bộ liên Chương trình thảo xử lý dịch kết thực thi được Mã nguồn Mã nguồn tăng cường Mã đối tượng *.h + *.cpp *.h + *.cpp *.obj cl.exe (Microsoft); gcc; g++ Môi trường soạn thảo tích hợp (IDE): Visual Studio; Eclipse; Qt Creator; Code block; Online tool; etc Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 30 © 2016
  16. Dữ liệu và giải thuật Dữ liệu ◼ Bất kỳ ngôn ngữ lập trình cấp cao nào cũng cho phép dùng các kiểu sau ◼ Kiểu dữ liệu cơ bản, được cung cấp bởi chính ngôn ngữ. Với C: ◼ Kiểu số ◼ Số nguyên: int (danh sách đầy đủ ở chương sau) ◼ Số nguyên: ◼ Số thực chấm động độ chính xác đơn: float ◼ Số thực chấm động độ chính xác đơn: double ◼ Số thực chấm động độ chính xác mở rộng: long double ◼ Kiểu ký tự: char ◼ Kiểu void: void ◼ Kiểu luận lý: bool (bổ sung bởi C++) ◼ Kiểu dữ liệu do người lập trình định nghĩa: struct, enum ◼ Kiểu dẫn xuất: mảng và con trỏ Xem thêm: Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 32 © 2016
  17. Dữ liệu và giải thuật Giải thuật ◼ Giải thuật là gì? ◼ Là các bước để giải quyết một bài toán ◼ Bằng cách nào mô tả giải thuật ◼ Dùng mã giả (pseudocode) ◼ Dùng sơ đồ (flowchart) ◼ Mục tiêu: tương tự mã giả. Nhưng sơ đồ có vẻ dể đọc hơn cho người không quen lập trình ◼ Dùng chính mã lập trình ◼ Mục tiêu: Mã được viết bởi ngôn ngữ lập trình như C, chỉ được trao đổi giữa những người có chuyên môn với nhau. Mục tiêu của mã này là để có thể chuyển ngữ dễ dàng và có chương trình thực thi ngay. ◼ Không nên dùng mã này để trình cho các đối tượng người dùng phổ thông Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 34 © 2016
  18. Dữ liệu và giải thuật Giải thuật - pseudocode Phần đầu của giải thuật Phần thân của giải thuật Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 36 © 2016
  19. Dữ liệu và giải thuật Giải thuật – pseudocode, ví dụ Algorithm average( N is integer) Preconsition: N lớn hơn hay bằng 0 Postcondition: các số được đọc và giá trị trung bình của chúng được in ra màn hình 1. sum = 0 2. for i = 1 to N do 1. number= read from keyboard a value 2. sum = sum + number end-for 3. averaged = sum / N 4. print averaged to screen 5. return End average Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 38 © 2016
  20. Dữ liệu và giải thuật Giải thuật – flowchart, các phần tử ◼ Terminal ◼ Điểm đầu hay cuối ◼ Input/output ◼ Nhập và xuất dữ liệu của chương trình ◼ Flow line ◼ Mô tả dòng điều khiển của chương trình ◼ Sự thực thi đi theo con đường này ◼ Decision ◼ Cho phép kiểm tra một điều kiện ◼ Biểu thức luận lý được dùng Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 40 © 2016
  21. Dữ liệu và giải thuật Giải thuật – flowchart, cấu trúc tiêu biểu false true Cấu trúc if Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 42 © 2016
  22. Dữ liệu và giải thuật Giải thuật – flowchart, cấu trúc tiêu biểu false false false true true true Cấu trúc switch-case Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 44 © 2016
  23. Dữ liệu và giải thuật Giải thuật – flowchart, cấu trúc tiêu biểu false true true false Cấu trúc while Cấu trúc do while Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 46 © 2016
  24. Dữ liệu và giải thuật Giải thuật – flowchart, bài toán đơn giản Hãy phân rã các bài toán con tiếp theo Trường Đại Học Bách Khoa Lập trình C/C++ Trung Tâm Kỹ Thuật Điện Toán 48 © 2016