Xem mẫu

  1. BỘ CÔNG NGHIỆP TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HÀ NỘI ---  --- ĐỀ CƯƠNG CHI TIẾT MÔN HỌC KỸ THUẬT LẬP TRÌNH (Tài liệu giảng dạy) Biên soạn: ThS. Nguyễn Mạnh Cường (lưu hành nội bộ) HÀ NỘI – 8/2004 Đ Ề CƯƠNG CHI TIẾT MÔN HỌC: KỸ THUẬT LẬP TRÌNH Tài liệu tham khảo 1. Ngôn ngữ lập trình C++ - GS. TS. Phạm Văn Ất.
  2. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh 2. C++ và lập trình Hướng đối tượng - GS. TS. Phạm Văn Ất. 3. Kỹ thuật lập trình - Nguyễn Tiến Huy – Trần Hạnh Nhi. 4. Ngôn ngữ lập trình C++ - Ngô Trung Việt. …. CHƯƠNG I. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH C++ 1. Môi trường lập trình C++ Ngôn ngữ lập trình C++ là một sự mở rộng của ngôn ngữ lập trình C, trong đó, chủ yếu đưa thêm vào ngôn ngữ C khả năng lập trình hướng đối tượng và loại bỏ những phức tạp không cần thiết của ngôn ngữ . Để vào môi trường soạn thảo chương trình của C++ ta thực hiện: + Cài đặt chương trình soạn thảo mã lệnh C++ vào máy tính. + Vào thư m ục TC30\ BIN, chọn TC.Exe. Khi đó, môi trường soạn thảo C++ đ ã sẵn sàng. - Các thao tác khi soạn thảo chương trình: [1]. Mở một file mới: Chọn File\ N ew hoặc bấm phấm F3 sau đó gõ tên file vào. [2]. Lưu file: Chọn File\ Save ho ặc bấm phím F2. Nếu file chưa được đặt tên bởi người lập trình hãy đ ặt tên. [3]. Mở một file có sẵn: Chọn File\ Open ho ặc bấm phím F3. Chọn file cần mở và b ấm Enter. [4]. Soạn thảo chương trình: Chương trình được soạn thảo trong cửa sổ soạn thảo. Nói chung, khi soạn thảo thường thực hiện những thao tác sau: - D i chuyển con trỏ: dùng các phím m ũi tên, phím Page Up, Page Down. phím Home đưa con trỏ về đầu dòng, phím End đưa con trỏ về cuối dòng. - Sao chép: G iữ Shift và phím mũi tên để bôi đen đoạn cần sao chép. Đ ưa con trỏ tới nơi đặt đoạn sao chép và bấm tổ hợp phím Ctrl + K + C để dán. - D i chuyển khối: Nếu bấm tổ hợp phím Ctrl + K + V sẽ cho phép di chuyển đo ạn mã được bôi đen. 1 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  3. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh - Bỏ bôi đen khối: Đưa con trỏ lên trên đo ạn bôi đen và bấm tổ hợp phím Ctrl + K + K để bỏ bôi đen Chú ý: Khác với ngôn ngữ Pascal, ngôn ngữ C++ có phân biệt chữ hoa và chữ th ường. Để ghi các dòng chú thích, sử dụng dấu // tại đầu dòng hoặc đặt đoạn chú thích như sau: /* đoạn chú thích */ [5]. Dịch chương trình: Bấm phím F9 để dịch chương trình. Nếu chương trình có lỗi, chương trình d ịch sẽ báo lỗi. Chương trình chỉ thực thi đ ược nếu không có lỗi. [6]. Thực thi chương trình: Bấm tổ hợp phím Ctrl + F9 để thực thi chương trình. [7]. Đặt đường dẫn tới các thư viện: Trong một chương trình viết bằng ngôn ngữ C++ thường sử dụng các hàm trong các thư viện khác nhau. Thông thường, các thư viện đặt trong các thư mục TC\INCLUDE hoặc TC\ LIB. Môi trường lập trình C++ tự thiết đặt đường dẫn tới các thư viện này. Tuy nhiên, trong trường hợp đường dẫn bị thay đổi, ta cần phải thiết đặt lại. B1: Trong Menu chính, chọn Option\ Directories. B2: Trong Include, đặt đường dẫn tới các th ư viện có đuôi .h. Trong Libraries, đặt đường dẫn tới các thư viện đuôi .lib. 2. Các kiểu dữ liệu cơ bản trong C++ Trong C++ có sử dụng một số kiểu dữ liệu cơ bản sau: a. Kiểu số: bao gồm + Số nguyên ng ắn int: là kiểu dữ liệu có độ d ài 2 byte, dùng để khai báo các biến nguyên có giá trị trong khoảng –32768 -> 32767 + Số nguyên ngắn không dấu: unsign int: độ dài 2 byte, khai báo các biến nguyên có giá trị từ 0 tới 65535. + Số nguyên dài long: là kiểu dữ liệu có độ dài 4 byte, dùng khai báo các biến nguyên có giá trị trong khoảng – 2.147.483.648 -> 2.147.483.647. + Số nguyên dài không dấu: unsign long: độ dài 4 byte, khai báo các biến có giá trị từ 0 tới 4.294.967.295. 2 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  4. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh + Số thực (dấu phảy động) float: kích thước 4 byte khai báo các biến thực từ 3.4*10-38 -> 3.4*1038. + S ố thực double: kích thước 8 byte, có phạm vi từ 1.7*10-308 - > 1.7*10308 + Số thực (dấu phảy động, độ chính xác kép) d ài: long double: kích thước 10 byte, khai báo các biến từ 3.4 * 10-4932 tới 1.1 * 104932. b. Kiểu ký tự: bao gồm + Kiểu ký tự char: khai báo biến chứa một ký tự. + Kiểu con trỏ ký tự char *: tương đương với chuỗi ký tự. 3. B iến và cách khai báo biến Để khai báo biến trong C++ ta dùng cú pháp sau: Trong đó: - : có thể là m ột trong các kiểu dữ liệu chuẩn, có thể là các kiểu tự định nghĩa. - : được đặt tuân theo quy tắc đặt tên biến trong ngôn ngữ lập trình Pascal. - Các biến cách nhau bởi dấu phảy, các khai báo cách nhau bởi dấu chấm phảy. VD: int a, b, c; long so; char * s; Chú ý: có thể khai báo biến tại bất kỳ đâu trong chương trình và trước khi sử dụng. 4. Cấu trúc một chương trình đơn giản Một chương trình đơn giản trong C++ thường có cấu trúc như sau: //Khai báo các thư viện sử dụng trong chương trình. #include …. main() //tên hàm chính { // Nhập dữ liệu // Tính toán 3 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  5. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh // In các kết quả } VD1. xét đoạn trình sau: #include #include #include main() { clrscr(); int a, b; //khai báo hai biến nguyên a, b couta; coutb; int c; c = a+b; cout
  6. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh # include # include # include main() { clrscr(); int a, b; //khai báo hai biến nguyên a, b couta; coutb; int T, H, TI, TH; T = a +b; H = a-b; TI = a*b; TH= a/b; cout
  7. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh Các lệnh cout, cin chỉ thích hợp cho việc nhập xuất các biến kiểu số. Với các biến kiểu xâu ký tự thì xâu nhập, xuất phải không chứa dấu cách.  Định dạng dữ liệu trước khi xuất: Ta có thể sử dụng một trong 2 cách sau: Cách 1: sử dụng toán tử định dạng cout.width(int n): chỉ định số vị trí tối thiểu dành cho giá trị xuất là n vị trí. + Nếu giá trị x uất chiếm ít hơn n vị trí thì m ặc định là các ký tự trống sẽ chèn vào phía trước. + Nếu giá trị xuất chiếm nhiều hơn n vị trí, số vị trí dành cho giá trị xuất đó sẽ đ ược tăng lên sao vừa đủ thể hiện giá trị xuất. cout.fill(char ch): Chỉ định ký tự ch sẽ được điền vào những vị trí trống (nếu có). cout.precision(int n): chỉ định độ chính xác của giá trị số khi xuất là n ký tự sau dấu phảy. VD: float a = 123.4523. nếu muốn xuất a ra màn hình dưới dạng: |000123.45| ta có thể định dạng như sau: cout.width(9); cout.fill(‘0’); cout.precision(2); cout
  8. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh - Lệnh nhập: Cú pháp cin >> ; Trong đó: >>: được gọi là toán tử nhập. Dòng cin dùng để nhập các giá trị (thông thường là) từ bàn phím vào các biến. VD: couta; Chú ý: có thể dùng liên tiếp nhiều toán tử nhập trên một dòng cin để nhập giá trị cho nhiều biến. cin>>a>>b>>c; Bài tập ví dụ: Viết chương trình nhập vào một số thực x, in ra màn hình giá trị của F(x) = sin2(x) + cos(x) với độ chính xác 2 chữ số sau dấu phảy. # include # include # include void main() { clrscr(); float x, F; coutx cout.precision(2); cout
  9. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh … - Mỗi biến cần đưa ra màn hình cần có một đặc tả tương ứng tại vị trí muốn đưa ra. VD: Cần đưa ra các giá trị của các biến a, b, c kiểu nguyên, ta viết: printf (“ Giá trị của a b c la %d %d %d, a, b, c); Lệnh nhập: scanf. Cú pháp: scanf(“chuỗi các đặc tả”, , …); Tro ng đó, mỗi biến cần phải có một đặc tả tương ứng. Lệnh scanf nhập giá trị vào các biến thông qua địa chỉ của biến. c. Các lệnh nhập xuất trong Conio.h Lệnh xuất: puts. Cú pháp: puts(p); Trong đó p là một con trỏ, trỏ tới một ký tự hoặc hằng xâu ký tự. Nếu p là biến chứa 1 ký tự thì p phải có kiểu char *, nếu p là kiểu char thì phải là một mảng kiểu char. Lệnh puts sẽ đưa các ký tự được con trỏ p trỏ tới lên màn hình. VD: char * p = “a”; puts(p);// đưa ký tự a ra màn hình char q[100] = “Ha Noi”; puts(q);// đưa Ha Noi ra màn hình. Lệnh nhập: gets(). Cú pháp: gets(p); Trong đó, p là biến con trỏ ký tự, như vậy, p phải có kiểu char * . Nếu p là biến kiểu char thì phải là một biến mảng kiểu char. (char * p hoặc char p[]) Các lệnh gets, puts thích hợp cho việc nhập xuất các biến kiểu xâu ký tự. 6. B iểu thức trong C++ Một biểu thức thông thường được cấu thành từ hai thành phần: các toán tử và các toán hạng. a. Các toán tử: được tạm chia làm 3 loại Các toán tử số học 8 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  10. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh Trong C++ sử dụng các toán tử số học cho trong bảng sau: Stt Toán tử Ngôn ngữ Pascal Ngôn ngữ C++ Cộng 1 + + Trừ 2 - - 3 Nhân * * 4 Chia / / Đồng dư 5 mod % Tăng 1 đơn vị 6 +1 ++ Giảm 1 đơn vị 7 -1 -- 8 Gán := = VD: int a, b; int T, H, TI, TH, D; a=8; b=3; T = a+b; H = a-b; TI = a*b; TH = a/b; D = a%b; a++; b--; Các toán tử Logic Trong C++ sử dụng các toán tử Logic cho trong bảng sau: Stt Toán tử Ngôn ngữ Pascal Ngôn ngữ C++ 1 Và And && Hoặc 2 Or || Phủ định 3 Not ! Các toán tử so sánh Trong C++ sử dụng các toán tử So sánh cho trong bảng sau: Stt Toán tử Pascal Ngôn ngữ C++ Lớn hơn 1 > > Nhỏ hơn 2 < < Lớn hơn hoặc bằng 3 >= >= Nhỏ hơn hoặc bằng 4
  11. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh Không bằng 6 != b. Các toán hạng: có thể là hằng, biến hoặc hàm. VD: Trong biểu thức 3*X+2+sin(x), các toán tử + và * được sử dụng. Toán hạng bao gồm: Hằng (3 và 2), biến (X) và hàm (sin(x)). c. Thứ tự ưu tiên các phép toán Trong một biểu thức có sử dụng nhiều toán tử, thứ tự ưu tiên các toán tử như sau (theo chiều từ trái qua phải, từ trên xuống dưới): ! ++ -- * / % + - < >= == != && || VD: V iết biểu thức toán học sau bằng ngôn ngữ C++ (nếu cần) và cho biết thứ tự thực hiện các phép toán. 5x 6 +2/7 + (6 mod 3) i + j ++ (i+j)++ 10 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  12. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh CHƯƠNG II. CÁC CẤU TRÚC ĐIỀU KHIỂN TRONG C++ 1. Giới thiệu chung Một phần rất quan trọng trong một ngôn ngữ lập trình là các cấu trúc điều khiển. Trong Pascal ta đã làm quen với 3 loại cấu trúc điều khiển: Chọn, Rẽ nhánh, Lặp. Ta sẽ lần lượt xem xét các loại cấu trúc điều khiển đó trong ngôn ngữ C++. Ta tạm thời chia các cấu trúc điều khiển trong C++ theo cây thứ bậc sau: Cấu trúc điều khiển Cấu trúc Cấu trúc Cấu trúc chọn rẽ nhánh lặp Cấu trúc Cấu trúc lặp lặp với số với số lần lần lặp xác lặp không định xác định Cấu trúc lặp Cấu trúc lặp k iểm tra kiểm tra điều kiện điều kiện trước sau 2. Cấu trúc rẽ nhánh Trong thực tế, khi giải quyết một công việc thường ta phải lựa chọn nhiều phương án giải quyết khác nhau. Người ta thường biểu diễn vấn đề này bằng mệnh đề: - [1]. Nếu … thì …; - [2]. Nếu … thì … ngược lại thì… Để mô phỏng hai mệnh đề đó, trong ngôn ngữ lập trình C++ đ ưa ra cấu trúc rẽ nhánh. Cấu trúc rẽ nhánh có hai dạng như trong sơ đồ khối dưới đây. 11 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  13. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh BTĐK đúng? BTĐK đúng? Thực hiện lệnh Thực hiện N Y N2 lệnh1 Th ực hiện lệnh Y a). Mô tả mệnh đề [1] b) Mô tả mệnh để [2] Cú pháp: (mô phỏng mệnh đề 1) if () ; (Mô phỏng mệnh đề 2) if () ; else ; Ý nghĩa: [1]. nếu nhận giá trị đúng, sẽ thực hiện , ngược lại, bỏ qua lệnh if. [2]. nếu nhận giá trị đúng, sẽ thực hiện , ngược lại, nếu nhận giá trị sai sẽ thực hiện . Chú ý: - Biểu thức điều kiện được đặt giữa hai dấu ngoặc đơn “(“ “)”. - Câu lệnh trước else có dấu “;”. - và có thể là một khối lệnh. Các khối lệnh được đặt trong hai dấu { }. 12 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  14. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh VD: Lập chương trình nhập vào một số nguyên. Kiểm tra tính chẵn lẻ của số đó và thông báo ra màn hình. # include # include # include main() { clrscr(); int a; cout>a; if (a%2 = = 0) cout
  15. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh km = 0; cout=9.0 && hk = = “T”) T += 100000; cout
  16. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh # include main() { clrscr(); float tk; char * hk; long T; couttk; couthk; T=0; if (tk >= 7.0) T = 30000; if (tk>=9.0 && hk = = “T”) T += 100000; cout
  17. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh Ý nghĩa: Nếu nhận giá trị GT1, thực hiện Nếu nhận giá trị GT2, thực hiện … Nếu nhận giá trị GTn, thực hiện Nếu có thành phần [default:], thực hiện khi biến nguyên không nhận giá trị nào trong các giá trị trên. - Sơ đồ khối: Biến = GT1 Lệnh 1 Biến = GT2 Lệnh 2 … Biến = GTn Lệnh n L ệnh mặc định Chú ý: - Lệnh switch chỉ thực hiện trên biến nguyên. - Mỗi từ khoá case chỉ lựa chọn 1 trường hợp. - Các câu lệnh , … có thể là một khối lệnh. Sau đó bắt buộc phải có từ khóa . - Thành phần [deffault:] là không bắt buộc. Nếu có thành phần này, sẽ được được thực hiện sau khi tất cả các trường hợp case đều không thỏa mãn. 16 Biªn so¹n: NguyÔn M¹nh C­êng Trang
  18. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh VD1: Viết chương trình nhập vào một tháng của một năm nào đó. In số ngày của tháng đó ra màn hình. # include # include # include main() { clrscr(); int T, N; coutT; coutN; switch (T) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout
  19. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh Mã =3: Thạc sỹ. Mã =4: Tiến sỹ. Các mã khác: Không xếp loại học vị. # include # include # include main() { clrscr(); int M; coutM; switch (M) { case 1: cout
  20. §Ò c­¬ng chi tiÕt Kü thuËt lËp tr×nh 4. Cấu trúc lặp a. Vòng lặp với số lần lặp xác định Là vòng lặp mà người lập trình luôn biết trước số lần lặp của lệnh lặp. Trong quá trình lặp, ta thường sử dụng một biến để kiểm soát số lần lặp gọi là “Biến chạy”. Biến chạy thường nhận các giá trị từ cận dưới (n1) tới cận trên (n2) và số lần lặp bằng n2 – n1. Cú pháp: for (;;) ; Trong đó: : thông thường có có dạng: = . : thông thường có dạng: . : thông thường là một biểu thức để tang hoặc giảm biến chạy. Trong C++, vòng lặp có số lần lặp xác định cũng có nguyên lý hoạt động tương tự trong Pascal. Ý nghĩa: B1: Thực hiện B2: Kiểm tra . Nếu sai, thoát khỏi vòng for. Ngược lại, sang B3. B3: Thực hiện . B4: Thực hiện . Quay lại B2. Sơ đồ khối: Xác định BT1 Kiểm tra BT2 Thực hiện lệnh thân vòng for 19 Biªn so¹n: NguyÔn M¹nh C­êng tra BT3 Trang Kiểm
nguon tai.lieu . vn