Bài giảng Kỹ thuật lập trình - Nguyễn Thị Bé Tám

ppt 111 trang hoanguyen 2760
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 - Nguyễn Thị Bé Tám", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_ky_thuat_lap_trinh_nguyen_thi_be_tam.ppt

Nội dung text: Bài giảng Kỹ thuật lập trình - Nguyễn Thị Bé Tám

  1. TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI Khoa Điện Điện Tử Bộ Môn Kỹ Thuật Máy Tính Slide Bài Giảng KỸ THUẬT LẬP TRÌNH Giảng Viên: NGUYỄN THỊ BÉ TÁM Email: tamnguyenvtcntt@gmail.com 1
  2. Phương pháp học Thời gian học: 45 tiết ◼ Lý thuyết: 30 tiết, giảng trên lớp ◼ Thực hành:15 tiết, tại phòng máy hoặc bài tập lớn Đánh Giá ◼ Thi cuối kỳ: 70% (thi vấn đáp) ◼ Điểm quá trình: 30% Kiểm tra giữa kỳ: 10% (thi viết) Thực hành hoặc bài tập lớn: 10% Chuyên cần: 10% Tài liệu chính ◼ Slide Bài Giảng ◼ Sách “Giáo Trình Lập Trình” – Trần Đan Thư C, tập 1 và tập 2 Tài liệu tham khảo ◼ Ngôn ngữ lập trình C++, Quách Tuấn Ngọc ◼ Hehner E.C.R. A practical theory of programming (2ed., 2004)(242s) Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 2 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  3. Giới thiệu môn học Mục tiêu môn học ◼ Giới thiệu các khái niệm cơ bản về lập trình trên máy tính. ◼ Cung cấp cơ sở lý thuyết và các kỹ năng cơ bản về lập trình cho các môn học sau. Nội dung ◼ Một số thuật ngữ liên quan đến máy tính và lập trình (vd: chương trình, lập trình, ) ◼ Cách lập trình: giải thuật, xây dựng chương trình hoàn chỉnh (vd: các câu lệnh, chương trình con, ) ◼ Các giải thuật cơ bản về sắp xếp Kỹ năng tư duy và thực hành trên một ngôn ngữ cụ thể: Borland C++ Để học tốt ngoài bài giảng phải tham khảo thêm sách và thực hành nhiều. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 3 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  4. Phân bố môn học Lý thuyết ◼ C1: Khái niệm cơ bản ◼ C2: Dữ liệu và cấu trúc chương trình ◼ C3: Cấu trúc rẽ nhánh ◼ C4: Cấu trúc lặp ◼ C5: Hàm ◼ C6: Mảng một chiều và con trỏ ◼ C7: Mảng hai chiều ◼ C8: Chuỗi ◼ C9: Kiểu dữ liệu có cấu trúc ◼ C10: Tập tin Thực hành ◼ Hiện thực các bài toán bằng ngôn ngữ C++. ◼ Thực hành viết và sửa lỗi chương trình Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 4 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  5. Chương 1: Khái niệm cơ bản Một số khái niệm cơ bản về ◼ Máy tính và chương trình máy tính ◼ Ngôn ngữ lập trình Giải thuật và Flow chart ◼ Giải thuật và biểu diễn giải thuật ◼ Flow chart Các bước lập trình Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 5 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  6. Chương 1: Khái niệm cơ bản Máy tính và chương trình máy tính Máy tính ◼ Phần cứng máy tính (Hardware): bao gồm các thiết bị phần cứng (điện tử) như: màn hình, bàn phím, mainboard, ◼ Phần mềm (Software) Phần mềm Hệ thống (Hệ điều hành): Window, Linus, Phần mềm ứng dụng: Word, exel, Bordland C++ Chương trình máy tính: Tập hợp các lệnh liệt kê theo một trật tự nhất định tùy thuộc vào ngôn ngữ lập trình cụ thể để máy tính xử lý và cho kết quả theo mong muốn. ◼ Ngôn ngữ lập trình: tập hợp các ký hiệu, cú pháp dùng để viết chương trình để máy có thể hiểu được: Pascal, C++, C, ◼ Lập trình: Tạo (viết) một chương trình Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 6 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  7. Chương 1: Khái niệm cơ bản Máy tính và chương trình máy tính Ví dụ về chương trình “nhập vào 2 số nguyên và tính tổng” được viết ngôn ngữ C++. Cụ thể từng dòng lệnh, ta tìm hiểu sau: int a,b; main() { cout >a; cout >b; cout<<“tong =“<<a+b; Return 0 ; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 7 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  8. Chương 1: Khái niệm cơ bản Giải thuật và Flow chart Giải thuật: cách giải quyết vấn đề (để giải PT bậc 2, ta phải tính delta, ). Có thể biểu diễn bằng 2 cách: ◼ Bằng lời: diễn giải từng bước như bước 1, bước 2, ◼ Flow chart (lưu đồ): biểu diễn giải thuật bằng hình khối. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 8 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  9. Chương 1: Khái niệm cơ bản Giải thuật và Flow chart Các thành phần Flow chart Start • Start /Begin bắt đầu giải thuật. Chỉ có 1 và chỉ 1 điểm START. • Input / Output dữ liệu xuất/nhập • Phép gán trung gian No Điều kiện • Điều khiển rẽ nhánh Yes Giá trị xét phân nhánh Stop Trường hợp 1 Trường hợp i Khác • Stop/End kết thúc của giải thuật. Có thể có một hoặc nhiều điểm STOP. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 9 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  10. Chương 1: Khái niệm cơ bản Các bước lập trình Gồm một số bước cơ bản: ◼ B1: Xác định yêu cầu: dữ liệu vào, ra? ◼ B2: Phân tích tìm giải thuật ◼ B3: Thiết kế (vẽ lưu đồ, ) ◼ B4: Viết ◼ B5: Chạy thử nghiệm, kiểm tra, sửa lỗi ◼ B6: Đánh giá (so sánh hiệu quả của bài toán nếu có nhiều giải thuật khác để giải?), bảo trì bảo dưỡng. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 10 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  11. Chương 1: Khái niệm cơ bản Các bước lập trình Ví dụ: Giải phương trình bậc 1: ax+b=0 Giải: 1. Input: a,b. Output: nghiệm x 2. Biện luận từng trường hợp a,b 3. Vẽ lưu đồ 4. Viết chương trình 5. Cho các giá trị cụ thể a,b. Kiểm tra, sửa lỗi Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 11 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  12. Chương 1: Khái niệm cơ bản Các bước lập trình Start Lưu đồ giải PTB1 Nhập a, b Yes Yes a=0 ? b=0 ? No No X=-b/a Không có nghiệm Vô số nghiệm Stop Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 12 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  13. Chương 1: Khái niệm cơ bản Tóm tắt chương 1 Nắm vững các khái niệm: máy tính, chương trình máy tính, vẽ lưu đồ, các bước lập trình Bài tập: Xác định các bước lập trình (có vẽ lưu đồ) ◼ Giải phương trình bậc 2 ◼ Xác định xem số nguyên n là số nguyên tố? ◼ Nhập 3 số nguyên. Xác định giá trị lớn nhất, nhỏ nhất ◼ Nhập số n. Xét dấu n Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 13 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  14. Chương 2:Dữ liệu và cấu trúc chương trình Các khái niệm cơ bản về dữ liệu và biểu diễn dữ liệu trong máy tính Cấu trúc cơ bản một chương trình C++. Khai báo biến và một số phép toán cơ bản. Giới thiệu chương trình đơn giản dùng C++. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 14 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  15. Chương 2:Dữ liệu và cấu trúc chương trình Các khái niệm cơ bản về dữ liệu và biểu diễn dữ liệu trong máy tính Danh hiệu: Là tên của các đối tượng khác nhau chương trình như tên biến, hằng, chương trình con, Từ khóa: những từ do ngôn ngữ quy định sẵn. Vd: if, while Ký hiệu đặc biệt: là những ký tự có ý nghĩa trong ngôn ngữ: vd “*”, phép nhân, . Kiểu dữ liệu: qui định về hình dạng, cấu trúc, miền giá trị, cách biểu diễn và cách xử lý trong máy tính. ◼ Kiểu dữ liệu đơn giản: số nguyên, ký tự, thực, boolen ◼ Kiểu dữ liệu có cấu trúc: mảng, chuỗi, bản ghi, ◼ Kiểu con trỏ Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 15 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  16. Chương 2:Dữ liệu và cấu trúc chương trình Cấu trúc chương trình cơ bản trong C++ #include<>; //Khai báo thư viện chứa các hàm định nghĩa sẵn Khai báo các chương trình con Khai báo các biến ngoài dùng trong toàn chương trình Chương trình chính main() { Khai báo biến, hằng, dùng trong main Lệnh và cấu trúc lệnh } Mô tả (viết code ) cho các chương trình con Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 16 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  17. Chương 2:Dữ liệu và cấu trúc chương trình Khai báo biến và một số phép toán cơ bản Biến và khai báo biến: ◼ Biến: là ô nhớ lưu trữ dữ liệu và thay đổi được. Có kiểu dữ liệu tương ứng. ◼ Khai báo: kiểu dữ liệu Tên biến; Vd: int x; Các phép toán quan hệ: trả về giá trị boolean (0,1) vd: ==,!=, >=, ,< Các phép toán logic: ! (not), && (and), || (or) Các phép toán số học: +, -, *, /, Phép gọi hàm Phép gán: gán giá trị biểu thức cho biến, x=a+b; Biểu thức:là một công thức tính toán tạo từ các biến, hằng, các giá trị cụ thể, các phép toán và dấu (, ). Vd: 3+pi*sin(x) Hằng: giá trị không đổi trong suốt chương trình ◼ Khai báo: const kiểu dữ liệu tên hẳng; ◼ Vd: const real pi=3.14; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 17 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  18. Chương 2:Dữ liệu và cấu trúc chương trình Một số thao tác cơ bản trên Borland c++ 4.5 Sau khi khởi động Borland C++ Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 18 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  19. Chương 2:Dữ liệu và cấu trúc chương trình Một số thao tác cơ bản trên Borland c++ 4.5 Chon File->New: Mặc định tạo file noname00.cpp chứa trong thư mục BIN Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 19 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  20. Chương 2:Dữ liệu và cấu trúc chương trình Một số thao tác cơ bản trên Borland c++ 4.5 Chon File -> Save as: Đặt lại tên File và nơi lưu trữ mới E:\thuchanh\th1.cpp. Đây là màn hình gõ lệnh Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 20 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  21. Chương 2:Dữ liệu và cấu trúc chương trình Giới thiệu chương trình đơn giản dùng C++ #include // 1 #include // 2 main() //3 { float n,x; //3 cout >n;//5 if (n>=0)//6 cout<<"\ncan bac hai cua n la:"<<sqrt(n);//7 else//8 cout<<"\nn la so am";//9 return 0;//10 } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 21 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  22. Chương 2:Dữ liệu và cấu trúc chương trình Giới thiệu chương trình đơn giản dùng C++ Kết thúc mỗi dòng lệnh có dấu ; Phần thân chương trình trong hàm main() trong dấu {} Dòng 1,2: Khai báo thư viện dạng file *.h dùng chứa các hàm định nghĩa sẵn. ◼ iostream.h chứa hàm xuất nhập cin, cout ◼ math.h chứa hàm toán học vd: sqrt() Dòng 3: khai báo 2 biến x,n là số thực Dòng 4: cout > nhập từ bàn phím số thực và gán giá trị vào biến n Dòng 6 8: cấu trúc rẽ nhánh if else Dòng 10: return Hàm trả về giá trị Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 22 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  23. Tổng kết chương 2 Chương này giới thiệu sơ lược một số qui tắc khi viết một chương trình trong C++. Tham khảo thêm sách (trang 41 ->79) Bài tập: ◼ 1. Xây dựng chương trình: In ra họ tên, tên lơp, tên trương Mọi thông tin trên 1 dòng khác nhau Hiện thông tin cách xa góc màn hình ◼ 2. Viết chương trình xuất ra màn hình tam giác dạng: * Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 23 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  24. Chương 3: Cấu trúc điều kiện Dạng rẽ nhánh ◼ if ◼ if else ◼ Các cấu trúc if lồng nhau Dạng lựa chọn nhiều phương án ◼ switch Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 24 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  25. Chương 3: Cấu trúc điều kiện Dạng rẽ nhánh Mẫu lệnh 1: if (đk) Yes lệnh_1; đk lệnh_kế_tiếp; No Lệnh_1  Giải thích: Nếu điều kiên đúng (giá trị bằng 1), thực hiện lệnh_1, điều kiện sai sai bỏ qua lệnh_1 và thực hiện lệnh_kế_tiếp trong Lệnh_kế_tiếp chương trình, lệnh này không thuộc về cấu trúc của lệnh if. Lệnh trong if có thể là lệnh ghép gồm nhiều lệnh trong “{}” Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 25 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  26. Chương 3: Cấu trúc điều kiện Dạng rẽ nhánh Mẫu lệnh 2: ◼ if (đk) đk lệnh_1; No else Yes lệnh_2; Lệnh_1 Lệnh_2  Giải thích: Nếu đk đúng (giá trị bằng 1), thực hiện lệnh_1, đk sai (giá trị bằng 0) thực hiện lệnh_2 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 26 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  27. Chương 3: Cấu trúc điều kiện Dạng rẽ nhánh VD: Nhập vào số nguyên n. Xét dấu n (không âm hoặc âm). Nhận xét hai cách giải. Dùng mẫu lệnh 2 Dùng mẫu lệnh 1 #include #include main() main() { { int n; int n; cout >n; cin>>n; if (n>=0) if (n>=0)) cout<<"\nn la so khong am"; cout<<"\nn la so khong am"; else if (n<0) cout<<"\nn la so am"; cout<<"\nn la so am"; return 0; return 0; } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 27 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  28. Chương 3: Cấu trúc điều kiện Dạng rẽ nhánh Các lệnh if lồng nhau: nếu có nhiều lệnh if else lồng nhau thì else sẽ thuộc về if gần nhất if (đk1) if(đk2) Yes ĐK1 ĐK2 lệnh1; No else No Yes lệnh2; else Lệnh1 Lệnh2 lệnh_3; . Lệnh3 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 28 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  29. Chương 3: Cấu trúc điều kiện Dạng rẽ nhánh Ví dụ nhiều lệnh if lồng nhau. VD: Nhập vào số nguyên n. Xét dấu n (dương, âm, bằng 0). Nhận xét hai cách giải. Dùng mẫu lệnh 2 kết hợp if else lồng nhau #include main() { int n; cout >n; if (n!=0) if (n>0) cout<<"\nn la so duong"; else cout<<"\nn la so am"; else cout<<"\nn la so 0"; return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 29 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  30. Chương 3: Cấu trúc điều kiện Dạng lựa chọn nhiều phương án switch(biểu thức chọn) { case s0: BiểuThứcChọn lệnh 0; break; case s1: S0 S1 Sn Khác: S ,,, S lệnh 1; 1 n break; LenhLenh 00 Lenh 1 Lenh n lenh case sn: lệnh n; break; default:  Lệnh trong từng case có thể là lệnh đơn lệnh; hoặc lệnh ghép hoặc một cấu trúc lệnh bất kỳ. s , s , .s là các giá trị của biểu thức } 0 1 n Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 30 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  31. Chương 3: Cấu trúc điều kiện Dạng lựa chọn nhiều phương án Ví dụ: nhập 2 số nguyên a,b. Thực hiện các phép toán. nhập ‘+’: Thực hiện phép toán +, tương tự: ‘-’, ‘*’, ‘:’ #include main() { int a,b; char ch; cout >a; cout >b; cout >ch; switch (ch) { case '+': cout<<"a+b="<<a+b; break; case '-': cout<<"a-b="<<a-b; break; case '*': cout<<"a*b="<<a*b; break; case '/': cout<<"a/b="<<a/b; break; default: cout<<"\nkhong nhap dung phep toan"; } return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 31 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  32. Chương 3: Cấu trúc điều kiện Dạng lựa chọn nhiều phương án Giải ví dụ trên bằng cấu trúc if #include main() { int a,b,x; char ch; cout >a; cout >b; cout >ch; if (ch=='+') cout<<"a+b="<<a+b; else if(ch=='-') cout<<"a-b="<<a-b; else if(ch=='*') cout<<"a*b="<<a*b; else if(ch=='/') cout<<"a/b="<<a/b; else cout<<"\nkhong nhap dung phep toan"; return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 32 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  33. Chương 3: Cấu trúc điều kiện Tóm tắt Nắm vững từng loại cấu trúc lệnh và tùy trường hợp kết hợp nhiều cấu trúc với nhau Bài tập ◼ Giải phương trình bậc nhất, bậc 2 ◼ Nhập vào 4 số nguyên. Tìm số lớn nhất, nhỏ nhất Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 33 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  34. Chương 4: Cấu trúc lặp Có hai dạng cơ bản ◼ Lặp với số lần lặp biết trước dùng for , hoặc while , do while ◼ Lặp với số lần lặp chưa biết trước: dùng while hoặc do while Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 34 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  35. Chương 4: Cấu trúc lặp Cấu trúc for for ([khởi tao];[điều kiện]; [thay đổi điều kiện]) Lệnh; - Lệnh thực hiện lặp đi lặp lại đến khi biểu thức điều kiện không còn đúng nữa - Thay đổi điều kiện: tăng hoặc giảm nhưng là giá trị rời rạc. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 35 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  36. Chương 4: Cấu trúc lặp Cấu trúc for Ví dụ In ra màn hình 1 Ta có thể viết như sau 2 3 #include 4 main() 5 { cout<<"\n1\n2\n\3\n4\n5\n6\n7 "; 6 return 0; 7 } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 36 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  37. Chương 4: Cấu trúc lặp Cấu trúc for #include #include main() main() { { int i; int i=1; for (i=1;i #include main() main() { { for (int i=1;i =1;i ) cout<<i<<“\n”; cout<<8-i<<“\n”; return 0; return 0; } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 37 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  38. Chương 4: Cấu trúc lặp while, do while while (đk) lệnh; Kiểm tra đk, nếu đúng thực hiện lệnh, quay lại kiểm tra đk tiếp, Quá trình lặp đi lặp lại Yes đến khi nào đK sai thì Lệnh ĐK dừng và thoát khỏi while No  Có một biến điều khiển trong biểu thức điều kiện để đảm bảo điều kiện dừng cho vòng lặp Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 38 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  39. Chương 4: Cấu trúc lặp while, do while do lệnh; while (đk); Lệnh được thực trước, sau Lệnh đó kiểm tra ĐK, nếu đúng quay lại thực hiện lệnh tiếp. Quá trình lặp đi, lặp lại cho đến khi ĐK sai thì dừng Yes ĐK  Có một biến điều khiển trong biểu thức ĐK đảm bảo điều No kiện dừng của vòng lặp, khác while ở chỗ lệnh được thực hiện trước khi kiểm tra đk Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 39 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  40. Chương 4: Cấu trúc lặp while, do while VD: Dùng while, do while với số lần lặp biết trước #include #include main() main() { { int i=1; int i=1; while (i<8) do { { cout <<i<<“\n”; cout <<i<<“\n”; i++; i++; } } return 0; while (i<8) } return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 40 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  41. Chương 4: Cấu trúc lặp while, do while VD: Dùng while, do while với số lần lặp không biết trước. Xuất ra màn hình ký tự vừa nhập, công việc dừng khi ký tự nhập là ‘n’. #include #include main() main() { { char ch=' '; char ch=' '; while (ch!='n') do { { cout >ch; cin>>ch; cout<<"\n"<<ch; cout<<"\n"<<ch; } } while (ch!='n'); return 0; return 0; } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 41 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  42. Chương 4: Cấu trúc lặp Tóm tắt Nắm vững ứng dụng cấu trúc lặp là thực hiện công việc nào đó nhiều lần, nếu số lần lặp biết trước thì có thể dùng for, while, do while, ngược lại chỉ dùng được while Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 42 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  43. Chương 4: Cấu trúc lặp Tóm tắt Nắm vững ứng dụng cấu trúc lặp là thực hiện công việc nào đó nhiều lần, nếu số lần lặp biết trước thì có thể dùng for, while, do while, ngược lại chỉ dùng được while Bài tập ◼ Viết chương trình nhâp dài và rộng. In ra chữ nhật (r=3 ,d=8) và * * ◼ Viết ct nhập số nguyên n. Liệt kê n số nguyên tố đầu tiên. ◼ Viết chương trình nhap hai số a và b. Tìm ước số chung lớn nhất và bội số chung nhỏ nhất Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 43 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  44. Chương 5: Hàm Chương 5: HÀM Mục tiêu Định nghĩa, khai báo Cách truyền tham số, địa chỉ Tầm vực biến Đệ quy Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 44 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  45. Chương 5: Hàm MỤC TIÊU Bài toán: tính tổng: 1! + 2! + 3! + + n! Nhận xét: ◼ Cách tính 1!, 2!, 3!, n! là giống nhau, chỉ thay đổi giá trị cần tính. ◼ Tất cả có điểm chung là từ số tự nhiên n bất kỳ sẽ tính giai thừa của n. ◼ Có thể “đặt thừa số chung” cách tính giai Hàm sẽ được dùng trong trường hợp này Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 45 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  46. Chương 5: Hàm ĐỊNH NGHĨA –KHAI BÁO Là một đoạn chương trình nằm ngoài chương trình chính Có thể tái sử dụng nhiều lần Khi được gọi các câu lệnh trong hàm sẽ được thực hiện Tuy cùng một mã chương trình nhưng kết quả thực hiện cụ thể tùy thuộc vào trạng thái của biến lúc sử dụng Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 46 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  47. Chương 8: Hàm ĐỊNH NGHĨA –KHAI BÁO Hàm có giá trị trả về, có truyền thông số ◼ Khai báo: kieu_tra_ve Ten_ham(cac tham so) VD: int giaithua(int n) Không có giá trị trả về, có truyền thông số: ◼ Khai báo: void Ten_ham(cac tham so) VD: void giaithua(int n) Không có giá trị trả về, không có thông số ◼ Khai báo: void Ten_ham(void) VD: void vi_du(void) Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 47 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  48. Chương 5: Hàm Ví dụ chương trình dùng hàm có giá trị trả về và có truyền thông số #include long int giaithua(int n); //khai báo hàm, giá trị trả về long int main() { long int gt; int n; cout >n; gt=giaithua(n); return 0; } long int giaithua(int n) //dinh nghia ham { long int g=1; for(int i=1;i<=n;i++) g=g*i; return (g); } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 48 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  49. Chương 5: Hàm Ví dụ chương trình dùng hàm không giá trị trả về và có truyền thông số, không có truyền thông số #include void thong_bao(void); void hien_thi(int n);//khai bao ham main() { int n; do{ cout >n; if (n<0) thong_bao(); } while (n<0); hien_thi(n); return 0; } void thong_bao(void) //dinh nghia ham { cout<<"\nn la so am! Nhap lai n\n\n";} void hien_thi(int n) { cout<<"\nGia tri tu 0 toi n la:"; for(int i=0;i<=n;i++) cout<<i<<" "; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 49 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  50. Chương 5: Hàm Truyền tham trị include void hoan_vi(int a,int b); //khai bao ham main() { int n=10; int m=20; cout<<"\nTruoc khi goi ham: "<<"n="<<n<<",m="<<m; hoan_vi(n,m); cout<<"\n\nSau khi goi ham: "<<"n="<<n<<",m="<<m; return 0; } void hoan_vi(int a,int b) { int tam; cout<<"\n\nTruoc khi hoan vi: "<<"a="<<a<<",b="<<b; tam=a; a=b; b=tam; cout<<"\n\nSau khi hoan vi: "<<"a="<<a<<",b="<<b; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 50 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  51. Chương 5: Hàm Truyền tham biến #include void hoan_vi(int *p,int *q); //khai bao ham main() { int n=10; int m=20; cout<<"\nTruoc khi goi ham: "<<"n="<<n<<",m="<<m; hoan_vi(&n,&m); cout<<"\n\nSau khi goi ham: "<<"n="<<n<<",m="<<m; return 0; } void hoan_vi(int *p,int *q) { int tam; cout<<"\n\nTruoc khi hoan vi: "<<"*p="<<*p<<",*q="<<*q; tam=*p; *p=*q; *q=tam; cout<<"\n\nSau khi hoan vi: "<<"*p="<<*p<<",*q="<<*q; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 51 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  52. Chương 5: Hàm TẦM VỰC BIẾN Định nghĩa: Phạm vi mà một biến số có thể được hiểu, được truy xuất Quy tắc: ◼ Nếu biến khai báo trong một khối, tầm vực của nó bắt đầu từ vị trí khai báo đến cuối khối đó. ◼ Nếu khai báo trong hàm thì chỉ sử dụng trong hàm. ◼ Nếu khai báo trong vòng for chỉ sử dụng trong vòng for. ◼ Nếu khai báo bên ngoài tất cả các khối/hàm, tầm vực của nó từ đầu đến cuối tập tin Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 52 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  53. Chương 5: Hàm TẦM VỰC BIẾN #include void thi_du(void); int i=0; //bien toan cuc co the duoc dung trong main va ham main() { for (i=1;i<=5;i++) thi_du(); return 0; } void thi_du(void) { int i=0; int m=3; m++; cout<<"i="<<i; cout<<",m="<<m; }//KQ:i=0, ,0,m=4Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 53 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  54. Chương 5: Hàm ĐỆ QUY Định nghĩa: Một hàm có tính đệ quy nếu trong thân hàm có lệnh gọi lại chính nó. VD1: Tính n! Giaithua(n) = 1.2.3 .(n-1).n = giaithua(n-1)!.n Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 54 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  55. Chương 5: Hàm ĐỆ QUY #include int giaithua(int n); main() { int n,g; cout >n; g=giaithua(n); cout<<"\n"<<n<<"!="<<g; return 0; } int giaithua(int n) { if (n==0) return 1; return (giaithua(n-1))*n; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 55 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  56. Chương 5: Hàm ĐỆ QUY VD2: Tính tổng S(n) =1+2+3+ .+n = S(n-1)+n #include int tong(int n); main() { int n,s; cout >n; s=tong(n); cout<<"\n"<<"tong("<<n<<")="<<s; return 0; } int tong(int n) { if (n==0) return 0; return (tong(n-1))+n; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 56 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  57. Chương 5: Hàm ĐỆ QUY Nhận xét: Thiết lập hàm đệ quy ◼ Điền kiện dừng: tại một giá trị nào đó, hàm trả về giá trị cụ thể. Giaithua(0)=1 Tong(0)=1 ◼ Trong thân hàm có gọi lời gọi hàm thông số là tên hàm. Nó sẽ được gọi đến khi gặp điều kiện dừng return (giaithua(n-1))*n; return (tong(n-1))+n; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 57 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  58. Chương 6: Mảng một chiều và con trỏ Chương 6: Mảng một chiều và con trỏ Định nghĩa Truy xuất mảng Bài toán về mảng ◼ Sắp xếp mảng: Bubble Sort ◼ Tìm kiếm phần tử trong mảng Nhị phân Tuyến tính Con trỏ Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 58 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  59. Chương 6: Mảng một chiều và con trỏ Định nghĩa Định nghĩa: ◼ Mảng một chiều là một dãy gồm nhiều phần tử liên tiếp cùng một kiểu. ◼ Các phần tử của một mảng phải có cùng kiểu gọi là kiểu cơ sở (int, float, ) Khai báo: Kieu_du_lieu ten_mang [kich_thuoc]; Kích thước: số phần tử tối đa mà mảng có thể chứa, phải là hằng số. Chỉ số từng phần tử có được đánh chỉ số từ 0 tới (kich_thuoc -1) Vi dụ : int a[100];// mảng a có thể chứa 100 phần tử kiểu int Phần tử thứ nhất ký hiệu a[0]; Phần tử thứ 100 ký hiệu a[99] Truy xuất: truy xuất từng phần tử của mảng ◼ Nhập phần tử thứ i: cin>>a[i]; ◼ Xuât phần tử thứ i : cout<<a[i]; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 59 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  60. Chương 6: Mảng một chiều và con trỏ Truy xuất mảng VD: Chương trình nhập 1 mảng có n phần tử là số nguyên #include const int kich_thuoc=100; main() { int x[kich_thuoc]; //hoac int x[100]; cout >n; //n >x[i]; //nhập for (i=0;i<n;i++) cout<<x[i];//Xuất return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 60 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  61. Chương 6: Mảng một chiều và con trỏ Truy xuất mảng #include #define max 100 int tong(int a[],int n); void xuatnhap(int a[],int n); void xuatnhap(int a[],int n) { for(int i=0;i >a[i];} cout >n; cout<<"\nso phan tu cua day can nhap n="<<n<<"\n"; xuatnhap(a,n); cout<<"\ntong cac phan tu cua day tong = "<<tong(a,n); return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 61 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  62. Chương 6: Mảng một chiều và con trỏ Truy xuất mảng #include #define max1 100 int min(int a[],int n); void nhap(int a[],int n); main() { int n,a[max1]; cout >n; nhap(a,n); cout >a[i];} } int min(int a[],int n) { int m=a[0]; for(int i=0;i<n;i++) if(a[i]<a[m]) m=i; return m; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 62 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  63. Chương 6: Mảng một chiều và con trỏ Giải thuật sắp xếp– Bubble sort Bài toán: Sắp xếp các phần tử trong mảng có giá trị tăng dần Ý tưởng về giải thuật: ◼ Trước tiên tìm phần tử lớn nhất đặt vào vị trí n của dãy. ◼ Tìm phần tử lớn nhì đặt vào vị trí n-1 của dãy ◼ Cuối cùng phần tử lớn thứ 1 (phần tử nhỏ nhất) đặt vào vị trí đầu của dãy Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 63 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  64. Chương 6: Mảng một chiều và con trỏ Giải thuật sắp xếp– Bubble sort Dãy số ban đầu: 10 5 9 8 i=1: j=1 5 10 9 8 j=2 5 9 10 8 j=3 5 9 8 10 i=2: j=1 5 9 8 j=2 5 8 9 i=3: j=1 5 8 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 64 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  65. Chương 6: Mảng một chiều và con trỏ Giải thuật sắp xếp– Bubble sort Đoạn chương trình hiện thực giải thuật for (i=0;i x[j+1]) { tam=x[j]; x[j]=x[j+1]; x[j+1]=tam; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 65 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  66. Chương 6: Mảng một chiều và con trỏ Thuật toán tìm kiếm Tìm kiếm tuyến tính: cho dãy bất kỳ duyệt từ đầu dãy đến cuối dãy để tìm ra phần tử cần tìm ◼ Vd: cho dãy x có 4 phần tử : 1 3 5 4 ◼ Tìm key=5 có chứa trong dãy x hay không? ◼ Kết quả key=5 xuất hiện vị trí 2 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 66 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  67. Chương 6: Mảng một chiều và con trỏ Thuật toán tìm kiếm Đoạn chương trình mô tả thuật toán tìm kiếm tuyến tính: dem=0; for(int i=0;i<n;i++) if(x[i]==k) { vitri[dem]=i; dem++; }  Mảng vitri dùng lưu trữ tất cả các vị trí xuất hiện giá trị k trong dãy và biến đếm lưu số lần xuất hiện của k Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 67 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  68. Chương 6: Mảng một chiều và con trỏ Thuật toán tìm kiếm Tìm kiếm nhị phân: Giả sử dãy đã có thứ tự tăng hoặc giảm dần. Tìm phần tử key có trong dãy hay không? Ý tưởng: So sánh key với phần tử nằm chính giữa dãy, xem key thuộc phần nào (trái hay phải). Sau đó xét tiếp phần chứa key, cứ như thế đến khi không chia được nữa Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 68 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  69. Chương 6: Mảng một chiều và con trỏ Thuật toán tìm kiếm c=n-1; d=0; do { i1=(c+d)/2; if (x[i1]>k) c=i1-1; //c: vi tri cuoi day else d=i1+1; //d: vi tri dau day } while ((d<=c) && (x[i1]!=k)); if (x[i1]==k) cout<<"\ntim thay"; else cout<<"\nKey can tim khong co trong day"; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 69 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  70. Chương 6: Mảng một chiều và con trỏ Hạn chế của bộ nhớ tĩnh Khi muốn lưu dữ liệu phải khai báo vùng nhớ đầu chương trìnhdẫn đến. ◼ Không sử dụng hết vùng nhớ đã cấp phát. ◼ Dữ liệu vượt quá kích thước cấp phát không lưu trữ được. ◼ VD: Khai báo mảng 1 chiều, thì kích thước mảng cố định trong suốt chương trình Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 70 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  71. Chương 6: Mảng một chiều và con trỏ Giới thiệu biến con trỏ Để khắc phục hạn chế của bộ nhớ tĩnh ta dùng bộ nhớ động Bộ nhớ động: có thể yêu cầu máy tính cấp 1 vùng nhớ khi cần và xóa đi khi không cần nữa. Con trỏ(biến con trỏ): là một loại biến dùng để truy xuất bộ nhớ động. Một biến kiểu con trỏ có thể lưu dữ liệu trong nó,là địa chỉ của đối tượng đang khảo sát có thể là một biến, hàm, chuỗi, Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 71 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  72. Chương 6: Mảng một chiều Con trỏ (pointer) Địa chỉ: vị trí nào đó trong bộ nhớ Dữ liệu: những gì được lưu trong ô nhớ. Khi khai báo một biến (vd int x;) biến x được cấp phát ô nhớ có địa chỉ riêng để lưu dữ liệu là số nguyên Khi khai báo biến kiểu con trỏ thì con trỏ sẽ trỏ tới một địa chỉ nào đó (tức là dữ liệu trong con trỏ là địa chỉ một biến, một chuỗi, hoặc là hàm, ) Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 72 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  73. Chương 6: Mảng một chiều và con trỏ Khai báo biến con trỏ - con trỏ hằng Cú pháp: ◼ kieu_du_lieu *ten_bien_con trỏ VD: int *p; Toán tử: &biến,toán tử lấy địa chỉ của biến (thuộc kiểu bất kỳ, không phải là thanh ghi). ◼ Vd int x; // ◼ &x: lấy địa chỉ của biến x ◼ Kết quả của phép toán lấy địa chỉ của một biến còn gọi là con trỏ hằng trỏ đến biến đó. Ta có thể gán: p=&x; p trỏ vùng nhớ của biến x *p: nội dung của ô nhớ mà p trỏ đến (nội dung ô nhớ biến x) Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 73 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  74. Chương 6: Mảng một chiều và con trỏ Khai báo biến con trỏ - con trỏ hằng int a; xx a Ví dụ về con trỏ int b; xx b trỏ đến biến int *p; &? p a=1; 1 a b=2; 2 b p=&a; &a 1 a p b=*p; 1 b *p=5; 5 a p=&b; &b 1 b p *p=a+2; 7 b Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 74 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  75. Chương 6: Mảng một chiều và con trỏ ỨNG DỤNG CON TRỎ CHO MẢNG Khi khai báo mảng vd : int a[10]; thì a chính là con trỏ hằng, là địa chỉ đầu tiên của mảng Ví dụ: ◼ int a[10] ; ◼ int *p; ◼ p=a;//p=&a[0]; Vậy : (p+1) sẽ trỏ đến a[1]; *(p+1)=a[1] (p+i) sẽ trỏ đến a[i]; *(p+i)=a[i] Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 75 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  76. Chương 6: Mảng một chiều và con trỏ ỨNG DỤNG CON TRỎ CHO MẢNG VD: Nhập dãy số nguyên, tính tổng các phần tử của dãy #include const int max=4; #include main() const int max=4; { main() int s=0; { int a[max]; int s=0; int *p; int a[max]; p=a; for (int i=0;i >a[i]; cin>>*(p+i); for (int j=0;j<max;j++) for (int j=0;j<max;j++) s=s+a[j]; s=s+*(p+j); cout<<"\ntong day="<<s; cout<<"\ntong day="<<s; return 0; return 0; } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 76 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  77. Chương 6: Mảng một chiều và con trỏ TÓM TẮT Nắm vững các giải thuật ứng dụng cho mảng Tham khảo thêm về cấp phát,hủy vùng nhớ dùng con trỏ. Bài tập ◼ Nhập mảng n số nguyên Loại bỏ phần tử có giá trị x trong mảng Chèn phần tử x vào vị trí y Loại bỏ các phần tử trùng Đếm các phần tử là số nguyên tố Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 77 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  78. Chương 7: Mảng hai chiều Chương 7: MẢNG HAI CHIỀU Định nghĩa: các phần tử trong mảng cùng kiểu dữ liệu, được lưu theo hàng và cột Cột 0 1 2 hàng 0 1 2 3 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 78 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  79. Chương 7: Mảng hai chiều Định nghĩa – khai báo Khai báo: Kiêu_du_lieu ten_mang[kt_hang][kt_cot]; Vd: int a[4][3]; Cột 0 1 2 hàng 0 a[0][0] a[0][1] a[0][2] 1 a[1][0] a[1][1] a[1][2] 2 a[2][0] a[2][1] a[2][2] 3 a[3][0] a[3][1] a[3][2] Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 79 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  80. Chương 7: Mảng hai chiều Cách truy xuất Không thể tác động lên toàn bộ mảng cùng một lúc. Tại mỗi thời điểm chỉ tác động từng phần tử Truy xuất 1 phần tử thông qua: tên mảng, chỉ số dòng, chỉ số cột. Vd a[i][j]: truy xuất phần tử ở hàng i, cột j Khởi tạo ◼ Vd: int a[2][2]={{0,1},{2,3}}; ◼ Hoặc: int a[2][2]={0,1,2,3}; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 80 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  81. Chương 7: Mảng hai chiều Cách truy xuất Đoạn chương trình mô tả cách xuất nhập các phần tử trong mảng #include main() { int i,j; int a[4][3]; for(i=0;i >a[i][j]; // Nhap gia tri cho mang for(i=0;i<4;i++) for(j=0;j<3;j++) cout<<a[i][j]<<" "; //Xuat gia tri return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 81 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  82. Chương 7: Mảng hai chiều Cách truy xuất #include const int max=40; // >n; cout >m; nhap(a,n,m); xuat(a,n,m); return 0; } void nhap(int a[][max],int hang,int cot) { for (int i=0;i >a[i][j]; } } void xuat(int a[][max],int hang,int cot) { for (int i=0;i<hang;i++) { for(int j=0;j<cot;j++) cout<<a[i][j]<<" "; cout<<"\n"; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính } 82 } Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  83. Chương 7: Mảng hai chiều TÓM TẮT Mảng hai chiều ứng dụng giải bài toán liên quan tới ma trận. Giải quyết vấn đề liên quan từng hàng hoặc cột ta có thể đưa về mảng một chiều để giải quyết các bài toán. Tham khảo thêm các bài toán về ma trận: ma trận đối xứng, tam giác trên, tam giác dưới, Bài tập ◼ Nhập vào hai ma trân nxm, mxp. Tính ma trận tích. ◼ Nhập vào mảng hai chiều mxn. Sắp xếp các phần tử từng hàng có giá trị tăng dần Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 83 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  84. Chương 8: Chuỗi Chương 8: CHUỖI Định nghĩa Cách truy xuất chuỗi Các hàm ứng dụng cho chuỗi Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 84 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  85. Chương 8: chuỗi ĐỊNH NGHĨA Khái quát chuỗi ký tự: ◼ Tập hợp các ký tự được xếp liên tiếp nhau trong bộ nhớ và có ký hiệu đặc biệt kết thúc ở cuối ‘\0’ Có hai cách khai báo: ◼ Dùng mảng:char ten_mang[kich_thuoc]; VD: char str[10]; ◼ Dùng con trỏ: char * ten_con_tro; VD: char *str; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 85 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  86. Chương 8: chuỗi Khai báo chuỗi Khởi tạo ◼ Nguyên cả chuỗi: char str[10]="hello"; ◼ Từng phần tử:char str[]={‘h','e','l','l','o','\0'}; Gán: ◼ Không gán được nguyên cả chuỗi ◼ Gán từng phần tử: str[0]=‘h’; Xuất, nhập: ◼ Nhập ◼ Nguyên cả chuỗi: cin.get(str,kich_thuoc); ◼ Từng phần tử: cin>>str[i]; ◼ Xuất: ◼ Nguyên cả chuỗi: cout<<str; ◼ Từng phần tử: cout<<str[i] ; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 86 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  87. Chương 8: chuỗi Xuất nhập chuỗi Khi dùng những hàm liên quan tới chuỗi, phải khai báo thư viện tên file string.h #include #include #define l 40 main() { char str[l]; cout<<"Nhap chuoi:"; cin.get(str,l); //Nhap chuoi tu ban phim cout<<str; //xuat chuoi return 0; } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 87 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  88. Chương 8: chuỗi Bài toán tính độ dài chuỗi #include main() { char str[40]="hello"; int dem=0; while((str[dem])!='\0') dem++; cout #include main() { char str[40]="hello"; cout strlen(str)=5 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 88 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  89. Chương 8: chuỗi MỘT SỐ HÀM XỬ LÝ CHUỖI VD: char str1[40]=“hello”, str2[10]=“thank”; ◼ sizeof(str1)=40 ◼ strlen(str1)=5 ◼ strcat(str1,str2)->str1=“hellothank” ◼ strncat(str1,str2,n)->str1=“hellot”,n=1 ◼ strcpy(str1,str2)->str1=“thank” ◼ strncpy(str1,str2,n)->str1=“thllo”,n=2 ◼ trcmp(str1,str2): ◼ Nếu str1 str2: trả về số dương ◼ Nếu str1>str2: trả về 0 ◼ Những hàm còn lại xem thêm trong sáchTham khảo thêm trong sách Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 89 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  90. Chương 8: chuỗi TÓM TẮT Nắm vững cách khai báo, truy, xuất lưu trữ chuỗi. Tham khảo thêm trong sách về các hàm về chuỗi. Bài tập: ◼ Nhập chuỗi s, loại tất cả các phần tử trùng ◼ Nhập chuỗi s, đổi các ký tự hoa sau khoảng trắng thành chữ hoa ◼ Nhập hai chuỗi s1, s2. ghép chuỗi s2 vào chuỗi s1 nếu được Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 90 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  91. Chương 9: kiểu dữ liệu có cấu trúc Chương 9: Kiểu dữ liệu có cấu trúc Định nghĩa: là một kiểu dữ liệu do người dùng định nghĩa bằng cách gom nhóm các kiểu dữ liệu cơ bản có sẵn trong C++ thành một kiểu dữ liệu phức hợp nhiều thành phần Cú pháp ◼ struct tên cấu trúc { các kiểu dữ liệu thành phần; }; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 91 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  92. Chương 9: kiểu dữ liệu có cấu trúc Chương 9: Kiểu dữ liệu có cấu trúc Ví dụ: Kiểu dữ liệu DATE gồm có: ◼ Thứ: chuỗi ký tự ◼ Ngày: số nguyên ◼ Tháng:số nguyên ◼ Năm:số nguyên Cú pháp định nghĩa: struct DATE { char thu; int ngay; int thang; int nam; }; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 92 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  93. Chương 9: kiểu dữ liệu có cấu trúc Chương 9: Kiểu dữ liệu có cấu trúc Cách khai báo biến có kiểu cấu trúc ◼ Tên cấu trúc tên biến; VD: DATE x; Cách truy xuất ◼ Tên cấu trúc. Biến thành phần; VD: x.ngay=5; Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 93 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  94. Chương 9: kiểu dữ liệu có cấu trúc Chương 9: Kiểu dữ liệu có cấu trúc #include #include main() { struct date { char thu[5]; int ngay; int thang; int nam; }; date x; cout >x.ngay; cout >x.thang; cout >x.nam; cout<<"\nTHU-NGAY-THANG-NAM VUA NHAP LA\n"; cout<<x.thu<<":"; cout<<x.ngay<<"/"; cout<<x.thang<<"/"; cout<<x.nam; Trườngreturn Đại Học 0; Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 94 } Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  95. Chương 10: TẬP TIN Chương 10: TẬP TIN Dữ liệu ghi lại trên ỗ đĩa còn gọi file. Ở đây đề cập xử lý hai loại tập tin: ◼ Văn bản ASCII: chứa các ký tự bảng mã ASCII. ◼ Nhị phân: chứa dữ liệu dạng nhị phân, đã được mã hóa Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 95 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  96. Chương 10: TẬP TIN Thao tác với tập tin Khai báo: FILE * tên_biến; ◼ VD: FILE *f; Lập trình với tập tin ◼ Mở tập tin (hàm fopen) ◼ Đọc, ghi dũ liệu từ tập tin vào biến nhớ hoặc ngược lại (fread, fscanf, fwrite, fpintf) ◼ Đóng tập tin fclose Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 96 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  97. Chương 10: TẬP TIN Xử lý tập tin văn bản Tạo tập tin văn bản mới #include #include #include main() { FILE*f1; f1=fopen("f_vd1.txt","wt"); // t: xử lý tập tin văn bản if(f1!=NULL) { fprintf(f1," vi du ve tao tap tin \n"); fprintf(f1," Dong thu nhat \n"); fprintf(f1," Dong thu hai \n"); fclose(f1); } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 97 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  98. Chương 10: TẬP TIN Xử lý tập tin văn bản Kiểm tra tập tin tồn tại hay không ?Nếu tạo tập tin không tạo được thì hàm fopen trả về NULL #include #include main() { FILE*f1; f1=fopen("f_vd1","wt"); if (f1==NULL) cout<<"khong the tao file\n"; else { fprintf(f1," vi du ve tao tap tin \n"); fprintf(f1," Dong thu nhat\n"); fprintf(f1," Dong thu hai\n"); fclose(f1); } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 98 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  99. Chương 10: TẬP TIN Xử lý tập tin văn bản #include #include main() { FILE*f1; f1=fopen("f_vd1","wt"); if (f1==NULL) cout<<"khong the tao file\n"; else { fprintf(f1," vi du ve tao tap tin \n"); fprintf(f1," Dong thu nhat\n"); fprintf(f1," Dong thu hai\n"); fclose(f1); } } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 99 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  100. Chương 10: TẬP TIN Xử lý tập tin văn bản Ghi dữ liệu vào tập tin từ biến nhớ #include #include main() { int i; float x; FILE*f1; f1=fopen("vd3.txt","wt"); if (f1==NULL) cout >x; fprintf(f1," vi du ve tao tap tin chua cac so \n"); fprintf(f1,"%f\n",x); for (i=0;i<11;i++) fprintf(f1,"%d ",i); fclose(f1); Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính } 100 } Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  101. Chương 10: TẬP TIN Xử lý tập tin văn bản VD: ghi file từ biến nhớ là chuỗi dữ liệu nhập từ bàn phím #include #include #include main() { char dong[255]; char tenfile[255]; FILE*f1; cout<<"\nnhap ten tap tin:"; gets(tenfile); f1=fopen(tenfile,"wt"); if (f1==NULL) cout<<"khong the tao file\n"; else { cout<<"\nnhap vao noi dung (nhan 2 lan Enter dung viec ghi\n"; do{ gets(dong); if (dong[0]!=0) fprintf(f1,"%s\n",dong); }while(dong[0]!=0); fprintf(f1,"\n ket thuc tap tin\n"); fclose(f1); Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính } 101 } Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  102. Chương 10: TẬP TIN Xử lý tập tin văn bản #include //Chương trình đọc file đã có sẵn #include #include main() { char dong[254]; char tenfile[255]; FILE*f1; cout<<"\nnhap ten tap tin:"; gets(tenfile); f1=fopen(tenfile,"rt"); if (f1==NULL) cout<<"khong the mo file\n"; else { cout<<"\nNoi dung file mo\n"; do{ if ((fgets(dong,255,f1))!=NULL) cout<<dong; }while(!feof(f1)); fclose(f1); } Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính } 102 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  103. Chương 10: TẬP TIN Tóm tắt Cách xử lý tập tin nhị phân tương tự như tập tin văn bản (tham khảo sách) Bài tập: ◼ Viết chương trình ghi vào tập tin các số từ 1 tới 100. Sau đó xuất đọc từ tập tin này, xuất ra các số là số nguyên tố Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 103 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  104. KẾT THÚC LÝ THUYẾT Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 104 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  105. Thực hành Yêu cầu: Sinh viên phải viết chương trình trước ở nhà. Khi thực hành chỉ kiểm tra và sửa lỗi. Tuần 1: Giới thiệu Bordland C++ 4.5, viết các chương trình đơn giản dùng hàm xuất nhập (cin, cout) Tuần 2: Viết chương trình dùng cấu trúc điều kiện (if, if else, switch) Tuần 3: Viết chương trình dùng cấu trúc lặp Tuần 4: Viết các chương trình liên quan mảng, hàm. Tuần 5: Viết các chương trình liên quan chuỗi, tập tin. Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 105 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  106. Tuần 1 Viết chương trình cho các bài toán ◼ Nhập chu vi, tính diện tích hình tròn ◼ Xuất màn hình bảng cửu chương n(n=1,2,3, ), theo dạng: 2x1=2 2x2=4 ◼ Xuất ra màn hình * * * * * * * * * * * * * * * * * * * * * ◼ Xuất ra màn hình * * * * * * * * * * * * ◼ Gia sử có khai báo ◼ int n=10; p=4; ◼ long q=2; ◼ float= x=1.75 ◼ char ch=‘a’; ◼ Tính a) n+q ?, b)n+x ?, C) n =q ?, E) n%p+q ?, F) n>q ? G) q+3*(n>q)?, ◼ h) q &&n ?, i) (q-2) && (n-10) ?, j) x*(q==2) ?, k) x*(q=5), m) n+ch ?, n) ch=ch+2 ?, o) cout<<ch? Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 106 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  107. Tuần 2 Viết chương trình và vẽ lưu đồ ◼ Nhập hai số x,y. Xuất ra màn hình tổng, hiệu, tích. ◼ Giải ptb1, gptb2 ◼ Nhập 4 số thực. In ra số nhỏ nhất lớn nhất. ◼ Nhập vào hai số a và b. Xét dấu các trường hợp a và b Cùng dương Cùng âm a dương, b âm a âm, b dương a bằng 0, b khác 0 b bằng 0, a khác không Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 107 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  108. Tuần 3 Viết chương trình ◼ Nhập n, xuất ra n số nguyên tố đầu tiên ◼ Tính S(n) = 1-2+3-4+ .+(-1)n+1.n ◼ Nhập ký tự và xuất ra màn hình. Dừng khi ký tự nhập ‘n’ ◼ Nhập chiều cao (vd: h=3). In tam giác cân rỗng * * * * * * * * ◼ Nhập chiều dài, rộng. In ra hình chữ nhật đặc và rỗng (VD: d=5, r=3) * * * * * * * * * * * * và * * * * * * * * * * * * * * * Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 108 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  109. Tuần 4 Nhập dãy n phần tử nguyên ◼ Xuất các phần tử chẵn, lẻ ◼ Loại các phần tử trùng ◼ Sắp xếp tăng ◼ Chèn giá trị i vào vị trí x Nhập hai ma trận. Tính ma trận tổng, tích Tính S(n) = 1+2+3 +n. Dùng đệ quy Nhập mảng hai chiều (nxm) các phần tử là số nguyên. ◼ Đếm các số nguyên tố có trong mảng (dùng hàm kiểm tra số nguyên tố) ◼ Tính tổng các phần tử chẵn, tổng các phần tử lẻ Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 109 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  110. Tuần 5 Nhập vào chuỗi s. ◼ Tính độ dài chuỗi ◼ Đổi các ký tự trong chuỗi thành chữ hoa ◼ Đếm số từ có trong chuỗi (mỗi từ cách nhau khoảng trắng) ◼ Xóa n ký tự từ vị trí x Tạo file văn bản với tên “bcc.txt”. Sau đó đọc nội dung file và xuất ra màn hình 1x1=1 10x10=100 Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 110 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám
  111. KẾT THÚC THỰC HÀNH Trường Đại Học Giao Thông Vận Tải - Khoa Điện Điện Tử - Bộ môn: Kỹ Thuật Máy Tính 111 Bài Giảng: Kỹ Thuật Lập Trình – GV: Nguyễn Thị Bé Tám