Ngôn ngữ lập trình C++
Bộ công nghiệpTrờng cao đẳng công nghiệp hà nội--- ---đề cơng chi tiếtmôn họckỹ 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(lu hành nội bộ)Hà nội 8/2004Đề cơng chi tiết Đề cơng chi tiết Kỹ thuật lập trìnhMôn học: Kỹ thuật lập trình Tài liệu tham khảo1. Ngôn ngữ lập trình C++ - GS. TS. Phạm văn ất.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\ New hoặc bấm phấm F3 sau đó gõ tên file vào.[2]. Lu file: Chọn File\ Save hoặc bấm phím F2. Nếu file cha đợ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:- Di 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: Giữ Shift và phím mũi tên để bôi đen đoạn cần sao chép. Biên soạn: Nguyễn Mạnh Cờng Trang 2 Đề cơng chi tiết Kỹ thuật lập trìnhĐ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. - Di 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. - 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 đenChú ý: 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. Biên soạn: Nguyễn Mạnh Cờng Trang 3 Đề cơng chi tiết Kỹ thuật lập trình+ 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.+ 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. Biến và cách khai báo biếnĐể khai báo biến trong C++ ta dùng cú pháp sau:<kiểu dữ liệu> <tên biến> <;>Trong đó: - <Kiểu dữ liệu>: 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.- <Tên biến>: đợ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ảnBiên soạn: Nguyễn Mạnh Cờng Trang 4 Đề cơng chi tiết Kỹ thuật lập trìnhMộ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 <Tên th viện>.main() //tên hàm chính{// Nhập dữ liệu// Tính toán// In các kết quả}VD1. xét đoạn trình sau:#include <conio.h>#include <stdio.h>#include <iostream.h>main(){clrscr();int a, b; //khai báo hai biến nguyên a, bcout<<nhập số nguyên a ;cin>>a;cout<<nhập số nguyên b;cin>>b;int c;c = a+b;cout<<Tổng của a + b là <<c;getch();return 0;}Trong ví dụ trên, ta có:- Các câu lệnh #include <tên th viện.h>: khai báo một số th viện sẽ sử dụng. Các th viện này có chứa sẵn các hàm sẽ sử dụng trong chơng trình. Chẳng hạn th viện iostream.h chứa các hàm cout, cin- Từ khóa main() để bắt đầu thân chơng trình chính.- Các ký tự {, } để bắt đầu và kết thúc một khối lệnh trong chơng trình. Các ký tự này tơng tự các từ khóa này Begin và End trong Pascal.- clrscr(); là một lời gọi hàm xóa màn hình. Hàm nãy đã có sẵn trong th viện stdio.h. Cần lu ý cách gọi hàm không đối, khác với Pascal.Biên soạn: Nguyễn Mạnh Cờng Trang 5 Đề cơng chi tiết Kỹ thuật lập trình- Các lệnh cout, cin có sẵn trong th viện iostream.h cho phép in lên màn hình câu thông báo và nhận giá trị nhập vào từ bàn phím cho hai biến a, b. chúng tơng tự nh lệnh Write và Read trong Pascal.- Lệnh getch() có trong th viện conio.h cho phép dừng màn hình lại để xem kết quả. Màn hình sẽ dừng cho tới khi một phím bất kỳ đợc bấm.- Lệnh return 0; dùng để chỉ ra kết quả trả về của hàm. VD2. Viết chơng trình nhập vào hai số nguyên a, b sau đó in ra màn hình tổng, hiệu, tích, thơng của hai số nguyên đó.#include <conio.h>#include <stdio.h>#include <iostream.h>main(){clrscr();int a, b; //khai báo hai biến nguyên a, bcout<<nhập số nguyên a ;cin>>a;cout<<nhập số nguyên b;cin>>b;int T, H, TI, TH;T = a+b;H = a-b;TI = a*b;TH= a/b;cout<<Tổng của a + b là <<T;cout<<Hiệu của a + b là <<H;cout<<Tích của a + b là <<TI;cout<<Thơng của a + b là <<TH;getch();return 0;}Chú ý: Trong C++, thơng của hai số nguyên là một số nguyên.5. Các lệnh nhập xuấta. Các lệnh nhập xuất trong IOStream.h- Lệnh xuất: Cú phápcout<< <Nội dung cần xuất>;Trong đó: <<: đợc gọi là toán tử xuất.Biên soạn: Nguyễn Mạnh Cờng Trang 6 Đề cơng chi tiết Kỹ thuật lập trình<Nội dung cần xuất>: có thể là Hằng ký tự, Hằng xâu ký tự, Biến, Hàm, phơng thức định dạng.VD: cout<<Sin(x) = ;cout<<Sin(x);Chú ý: - có thể sử dụng liên tiếp nhiều toán tử xuất trên một dòng cout.VD: cout<<Giá trị của a[<<i<<] là <<a[i];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ạngcout.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ị xuấ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<<a;Cách 2: sử dụng các hàm định dạng:Biên soạn: Nguyễn Mạnh Cờng Trang 7 Đề cơng chi tiết Kỹ thuật lập trìnhTơng tự nh các phơng thức định dạng, các hàm định dạng tơng ứng là:setw(int n) tơng tự nh cout.width(int n).setfill(char ch) tơng tự nh cout.fill(char ch).setprecision(int n) tơng tự nh cout.precision(int n).Cách dùng: sử dụng các hàm định dạng ngay trên các dòng cout, trớc khi đa ra giá trị xuất.VD: Với ví dụ trên, ta có thể viết:cout<<setw(9)<<setfill(0)<<setprecision(2)<<a;- Lệnh nhập: Cú phápcin >> <Biến>;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: cout<<Nhập giá trị của a;cin>>a;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 <conio.h>#include <math.h>#include <iostream.h>void main(){clrscr();float x, F;cout<<nhập số thực a ;cin>>xcout.precision(2);cout<<Giá trị F(<<x<<) = <<sin(x)*sin(x) + cos(x);Biên soạn: Nguyễn Mạnh Cờng Trang 8 Đề cơng chi tiết Kỹ thuật lập trìnhgetch();}b. Các lệnh nhập xuất trong Stdio.hLệnh xuất: printf.Cú pháp: printf( chuỗi cần xuất , <Biến 1>, <Biến 2>);Trong đó: Chuỗi cần xuất có thể là:- Hằng ký tự, hằng xâu ký tự: Là các ký tự cần in lên màn hình.- Các đặc tả hay ký tự đại diện, bao gồm: %d: đại diện cho biến nguyên.%f: đại diện cho biến thực.%c: đại diện cho biến kiểu ký tự (mặc đị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ả, <&Biến 1>, <&biến 2>);Trong đó, 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.hLệ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ìnhBiên soạn: Nguyễn Mạnh Cờng Trang 9 Đề cơng chi tiết Kỹ thuật lập trìnhchar 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. Biể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ạiCác toán tử số họcTrong C++ sử dụng các toán tử số học cho trong bảng sau:Stt Toán tử Ngôn ngữ PascalNgôn ngữ C++1 Cộng + +2 Trừ - -3 Nhân * *4 Chia / /5 Đồng d mod %6 Tăng 1 đơn vị+ 1 ++7 Giảm 1 đơn vị- 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;Biên soạn: Nguyễn Mạnh Cờng Trang 10 [...].. .Đề cơng chi tiết Kỹ thuật lập trình 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ữ Ngôn ngữ C++ Pascal 1 Và And && 2 Hoặc Or || 3 Phủ định 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++ 1 Lớn hơn > > 2 Nhỏ hơn < < 3 Lớn... 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 Biên soạn: Nguyễn Mạnh Cờng Trang 1 2 Đề cơng chi tiết Kỹ thuật lập trình BTĐK đúng? BTĐK đúng? N Thực hiện lệnh Thực hiện lệnh1 Y Thực hiện lệnh 2 N Y a) Mô tả mệnh đề [1] b) Mô tả... >= == != && || VD: Viế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)++ Biên soạn: Nguyễn Mạnh Cờng Trang 1 1 Đề 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... giải phơng trình bậc nhất với đối vào là hai hệ số a, b void PTBN(float a, float b) { if (a==0 && b==0) cout . 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. 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