C++ cơ bản hay nhất, tốt nhất, đầy đủ nhất: C++ là ngôn ngữ lập trình hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình. C++ chứa một lượng lớn các chương trình viết sẵn nằm trong thư viện chuẩn C++ (STL Standard Template Library).
Trang 1Chuyên đề 1
Một số nội dung NNLT C++
Trang 2chương trình viết sẵn nằm trong
thư viện chuẩn C++ (STL -
Standard Template Library)
Trang 3*NNLT C++
-Ngôn ngữ lập trình C++ được cho là ngôn ngữ
lập trình phổ biến nhất hiện nay vì tính tiện dụng
và linh hoạt Các nhà lập trình dùng nó để thiết
kế và cài đặt các phần mềm ứng dụng lớn C++
có thể can thiệp sâu vào các phần mềm hệ thống
và phần cứng.
-Các ứng dụng nổi tiếng như HĐH Windows,
máy tìm kiếm Google…Sau khi biết về ngôn ngữ lập trình C++, ta rất dễ tiếp cận các ngôn ngữ lập trình bậc cao khác như C#, Visual C++, Visual studio NET, Java hay PHP …
Trang 5Bài 1 CHƯƠNG TRÌNH ĐƠN GIẢN
Trang 6I Cấu trúc chương trình
***Chương trình 1
Trang 7I Cấu trúc chương trình/ ***Chương trình 1
Chú thích được NLT dùng để minh họa, giải thích hay
bình phẩm trong mã nguồn Được bỏ khi biên dịch chương trình
Trang 8I Cấu trúc chương trình/ ***Chương trình 1
Minh họa:
Trang 9I Cấu trúc chương trình/ ***Chương trình 1
-Dòng 2 #include <iostream>: Đây là khai báo thư viện
iostream chứa các lệnh, hàm… vào ra cơ bản trong C++.
2 Khai báo thư viện:
Khi lập trình, để sử dụng chương trình có sẵn trong thư viện nào thì ta phải khai báo thư viện đó, khai báo thư viện như sau:
#include <tên thư viện>
-Nếu cần khai báo nhiều thì mỗi thư viện viết trên một
dòng.
Ví dụ: #include<iostream>
#include<cmath> //chứa các thuật toán toán học
Trang 10I Cấu trúc chương trình/ ***Chương trình 1
-Dòng 3 “using namespace std;" cho phép sử dụng không
gian chuẩn làm mặc định và khi tham chiếu đến các thực thể trong nó thì không cần có tiền tố std::
Ví dụ: std::cout<<“Hi”; và cout<<“Hi”;
-Dòng 4 int main ()
Hàm main() là thân chương trình chính, không phụ
thuộc vào vị trí đặt hàm (ở đầu, cuối hay ở giữa của mã
nguồn) nó luôn được thực hiện đầu tiên khi chạy chương trình, mọi chương trình C++ đều tồn tại một hàm main()
Trang 11I Cấu trúc chương trình/ ***Chương trình 1
3 Dòng đầu ra chuẩn (standard output stream)
cout là luồng đầu ra chuẩn được định nghĩa trong thư viện iostream, kết hợp với toán tử << để đưa thông tin ra thiết bị xuất Ví dụ:
cout<< “NNLT C++”<<endl;
cout<< “Xin chao 10Tin K25” <<“\nChuc cac ban hoc GIOI”;
-endl và \n để đưa con trỏ xuống đầu dòng mới.
-Dấu chấm phảy (;) xác định kết thúc mỗi lệnh trong C+
+.
Trang 12I Cấu trúc chương trình/ ***Chương trình 1
-Dòng 6 return 0;
Lệnh kết thúc hàm main() và trả về giá trị 0 Đây là một kết thúc bình thường của một chương trình không có một lỗi nào trong quá trình thực hiện
-Cặp ngoặc { } thể hiện là một câu lệnh ghép hay khối
lệnh, hoặc bắt đầu và kết thúc hàm.
Trang 13I Cấu trúc chương trình
*** Chương trình 2 Chương trình nhận vào bán kính r từ bàn phím, hiện chu vi và diện tích ra màn hình.
Trang 14I Cấu trúc chương trình *** Chương trình 2
-Dòng 2 #define PI 100 là khai báo hằng tên là PI mang giá
trị 3.14 Trong các biểu thức liên quan ta dùng PI thay vì giá trị 3.14.
•Trong hệ cơ số 8, thêm số 0 ở đầu: 012,055…
•Trong hệ cơ số 16, thêm 0x ở đầu số: 0x35…
Ví dụ số 65(10) trong hệ 8 là 101(8) và hệ 16 là 41(16), cách viết
tương ứng 65, 0101, 0x41 cùng biểu diễn giá trị 65(10).
Trang 15I Cấu trúc chương trình *** Chương trình 2
+Hằng logic: True (1), False (0)
+Hằng xâu kí tự: là dãy các kí tự: “I love you”; “Lop 10 Tin”; đặt trong cặp nháy kép (“ ”).
Trang 16I Cấu trúc chương trình *** Chương trình 2
4 Hằng
-Hằng mang tên – hằng chuẩn:
được ngôn ngữ lập trình quy định sẵn như INT_MAX,
INT_MIN… và được viết IN HOA trong thư viện climits Người sử dụng phải khai báo thư viện chứa hằng khi muốn
sử dụng chúng
Trang 17I.Cấu trúc chương trình *** Chương trình 2.
4 Hằng
-Hằng do người lập trình tự định nghĩa (khai báo):
Cú pháp: #define <tên_hằng> <giá trị>
Hoặc const <kiểu_dữ_liệu> <tên_hằng> = <giá_trị>;
Hoặc const <tên_hằng> = <giá_trị>;
Trang 18I Cấu trúc chương trình *** Chương trình 2
-Dòng 5 float r, dt, cv; khai báo biến r, dt, cv kiểu số thực
float để lưu giá trị bán kính, diện tích và chu vi
5 Biến
-Biến là đại lượng được đặt tên để mang giá trị và có thể
thay đổi khi thực hiện chương trình Trong lập trình,
muốn lưu trữ giá trị nào đó thì phải khai báo biến để mang
nó
-Khi khai báo, máy tính cấp cho mỗi biến một vùng nhớ
tương ứng với kích thước tên kiểu dữ liệu được khai báo
-Biến phải được khai báo trước khi sử dụng và có thể
khai báo ngay tại vị trí bắt đầu dùng.
Trang 19I Cấu trúc chương trình *** Chương trình 2
5 Biến
Cách khai báo (declaring variables):
-Cách 1: khai báo thường.
Tên_Kiểu_dữ_liệu <biến1>, <biến2>, …;
-Cách 2: khai báo và khởi tạo giá trị đầu.
C1: Tên_Kiểu_dữ_liệu biến1=<giá trị 1>, biến2=<giá trị 2>,
…;
Ví dụ:
-long a,b; //khai biến a và b kiểu long
-int n=10; //khai báo và khởi tạo biến n=10
-int i(2),k=n + 5;// biến i nguyên và khởi tạo bằng 2, k bằng 15 -float eps=1.0e-6; // biến thực eps khởi tạo bằng 10 -6
-char c = 'Z'; // biến c kiểu kí tự và khởi tạo bằng 'Z'
Trang 20I Cấu trúc chương trình *** Chương trình 2
-Dòng 7 cin>>r; khi chạy chương trình, máy
chờ người nhập vào giá trị số từ bàn phím, máy
sẽ lưu trữ giá trị đó vào ô nhớ r.
6 Dòng đầu vào chuẩn (standard input
stream)
cin là luồng đầu vào chuẩn, kết hợp với toán
tử >> để đọc dữ liệu từ thiết bị vào và lưu vào ô nhớ của biến ngay sau >>
Cú pháp: cin>>biến_1 >>biến_2 …
Khi nhập các giá trị khác nhau phải cách
nhau 1 dấu cách hoặc dấu “enter”
Trang 21I Cấu trúc chương trình *** Chương trình 2
-Dòng 8 dt=PI*r*r; và dòng 9 cv=PI*r; là các
công thức tính diện tích và chu vi theo r (bán kính).
7 Toán tử gán - công thức
Dấu bằng (=) gọi là toán tử gán, bên trái dấu
= bắt buộc là một biến, bên phải là một biếu
thức Biểu thức có thể là hằng, biến hoặc là sự kết hợp giữa hằng, biến, phép toán và dấu
ngoặc tròn - ()
Máy tính giá trị của biểu thức ở vế phải và
gán cho biến ở bên trái lưu trữ
Trang 22I Cấu trúc chương trình *** Chương trình 2
7 Toán tử gán - công thức
-a=100; // gán giá trị 100 cho biến a
-a=a+1; // tính a+1, gán lại cho biến a
Trang 23I Cấu trúc chương trình *** Chương trình 2
Trang 24II Phần mềm codeblocks
1 Giới thiệu
-CodeBlocks là một Môi trường phát triển tích hợp (IDE) hỗ
trợ lập trình C++, có giao diện đẹp và miễn phí CodeBlocks kết hợp trình biên dịch MinGW cho phép soạn thảo, biên dịch (compiler) và gỡ lỗi (debbuger) rất thuận tiện.
-Biểu tượng phiên bản 13.12:
Trang 25-Thiết lập dịch: Từ cửa sổ CodeBlocks, kích
Settings/Compiler, x.h hộp thoại Compiler
Trang 26II Phần mềm codeblocks
1 Giới thiệu
-Thiết lập thông số của Debug, kích menu Project/ Biuld
Option/ và đảm bảo đặt dấu tích vào dòng “produce debugging symbols [-g]”/ OK:
Trang 27II Phần mềm codeblocks
2 Soạn thảo và thực hiện chương trình
B1: Tạo file CPP
-Menu File/ New/ Empty file, xuất hiện cửa
sổ soạn thảo mới với tên Untitled1…
-Menu “File/ Save”, đặt tên tệp mới (ví dụ:
Tong.cpp) và kích nút Save/ chọn tiếp OK.
-Soạn thảo mã nguồn cho bài toán.
Ví dụ: Viết chương trình nhập vào hai số
nguyên a và b từ bàn phím, in lên màn hình
tổng giá trị của hai số a + b như sau:
Trang 28Viết chương trình nhập vào hai số nguyên a và b từ bàn phím, in
lên màn hình tổng giá trị của hai số a + b như sau:
Trang 31Nếu hết lỗi cú pháp, CT sẽ thực thi luôn và
xuất hiện màn hình Console
Nhập vào 2 số nguyên có giá trị 4 và 5
<enter> xuất hiện như hình dưới đây:
Trang 32III Kiểu dữ liệu chuẩn, các phép toán.
1 Kiểu dữ liệu chuẩn
-Dùng để mô tả thông tin đầu vào, đầu ra và tính toán
trung gian Bao gồm các loại sau:
-Kiểu ký tự (char): Biểu diễn ký tự thông qua bảng mã
ASCII (‘A’, ‘$’, ‘9’ ) mỗi kí tự chiến một byte:
Trang 33III Kiểu dữ liệu chuẩn, các phép toán.
- Kiểu ký tự (char):
Trang 34III Kiểu dữ liệu chuẩn, các phép toán.
- Kiểu ký tự (char):
Trang 35III Kiểu dữ liệu chuẩn, các phép toán.
1 Kiểu dữ liệu chuẩn
-Kiểu số nguyên - Numerical integer types:
Có thể biểu diễn các giá trị như 5, 178, 1024 và
tồn tại ở nhiều tên với kích thước khác nhau 1, 2
hoặc 4 byte thuộc số nguyên không dấu
(unsigned) và có dấu (signed)
Trang 36III Kiểu dữ liệu chuẩn, các phép toán.
1 Kiểu dữ liệu chuẩn
-Kiểu số thực (dấu phảy động):
Trang 37III Kiểu dữ liệu chuẩn, các phép toán.
1 Kiểu dữ liệu chuẩn
-Kiểu ký tự (char):
-Kiểu số nguyên - Numerical integer types:
-Kiểu số thực (dấu phảy động):
-Kiểu logic - Boolean type: Với tên bool thể hiện được hai
trạng thái True (1) hoặc False (0).
-Kiểu xâu tí tự - string: Lưu trữ một dãy các kí tự viết liên
tiếp và đặt trong dấu “ ” như “hello world!”, “Ngon ngu lap trinh C++”
Trang 38III Kiểu dữ liệu chuẩn, các phép toán.
Trang 39III Kiểu dữ liệu chuẩn, các phép toán.
Trang 40III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
-Các toán tử logic ( !, &&, ||) = (NOT, AND, OR ).
+!a; //phủ định của a; !(3==3) = false; !9 = 0;
+a && b = true khi a=true và b=true
+a || b = true khi hoặc a=true hoặc b=true
Trang 41III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
-Tăng (++) và giảm ( ) một đơn vị.
++a; a++; //tăng giá trị biến a 1 đơn vị
a; a ; //giảm giá trị biến a 1 đơn vị
3 lệnh sau là tương đương: a++; a+=1; a=a+1;
Khi chúng đứng độc lập, giá trị sau khi thực hiện là như nhau Nếu chúng là một phần của biểu thức thì sẽ ảnh hưởng đến giá trị của biểu thức.
a=5; b=10;
c= ++a * 2 + b ; //c= 6, c=21, b=9.
Toán tử tăng/giảng đứng trước, sẽ thực hiện trước; đứng sau
sẽ thực hiện sau khi tham gia vào tính toán giá trị của biểu thức.
Trang 42III Kiểu dữ liệu chuẩn, các phép toán.
Trang 43III Kiểu dữ liệu chuẩn, các phép toán.
// i = 3 , j = 6
Trang 44III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
- Toán tử điều kiện ?
Cú pháp: condition ? result1 : result2
Nếu condition là true thì giá trị trả về là result1, nếu
không giá trị trả về là result2.
Trang 45III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
-Các toán tử thao tác bit ( &, |, ^, ~, <<, >> ).
thay đổi trực tiếp các bit biểu diễn, tốc độ tính toán nhanh hơn G/s a=6 (hệ 2: 110) và b=5 (hệ 2: 101)
Trang 46III Kiểu dữ liệu chuẩn, các phép toán.
Trang 47III Kiểu dữ liệu chuẩn, các phép toán.
Trang 48III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
-Thứ tự ưu tiên của các toán tử
(), ++, , *, /, %, +, -, phép quan hệ, thao tác bit, phức hợp
Trang 49III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
* Một số hàm xử lí số thực trong thư viện
cmath:
-abs(x): trả về giá trị tuyệt đối của số x.
-pow(x, y): hàm mũ, trả lại giá trị x lũy thừa y
-exp(x): trả lại giá trị e mũ x (ex).
-log(x), log10(x) : trả lại lôgarit cơ số e và
lôgarit thập phân của x (lnx, logx).
-sqrt(x): trả lại căn bậc 2 của x.
Trang 50III Kiểu dữ liệu chuẩn, các phép toán.
số thực có giá trị bằng số nguyên lớn nhất nhỏ hơn
hoặc bằng x floor(2.4)=2, floor(-2.8)=-3
-Hàm round(x): làm tròn vê số nguyên gần nhất
round(2.4)=2, round(2.6)=3.
-atof(s_number) : trả lại số thực ứng với số viết dưới
dạng xâu kí tự s_number.
Trang 51III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
* Hàm xử lý ký tự trong thư viện ctype:
-Hàm isdigits(c): là true nếu c là chữ số từ
‘0’ ’9’
-Hàm isalpha(c): là true nếu c là ký tự thuộc
‘A’ ‘Z’ hoặc ‘a’ ‘z’
-Hàm islower(c): là true nếu c là ký tự in
thường
-Hàm isupper(c): là true nếu c là ký tự in HOA
Trang 52III Kiểu dữ liệu chuẩn, các phép toán.
2 Các phép toán
*Sinh số ngẫu nhiên
-Hàm rand() sinh giá trị ngẫu nhiên từ 0 đến 32767
(RAND_MAX) trong thư viện cstdlib.
-Hàm srand() khởi tạo số ngẫu nhiên trong thư viện
ctime:
+srand (time(NULL));
-VD: Sinh số nguyên ngẫu nhiên x từ minx đến maxx:
srand (time(NULL));
long long minx=…, maxx=…, x;
long long xx=maxx-minx;
x= minx + xx*rand()/RAND_MAX;
Trang 53* Gỡi lỗi chương trình