E Learning Week2 Format
E Learning Week2 Format
.......................................................................................22
1.14 Cấu trúc chung của một chương trình C++ (Structure of
a program).......................................................................25
Chương 1. TỔNG QUAN VỀ C/C++
1.1 Giới thiệu
Ngày nay với sự phát triển nhanh chóng của khoa học công nghệ
cùng với sự bùng nổ về dữ liệu, thì công việc xử lý thông tin không
thể làm một cách thủ công thiếu hiệu quả trong công việc. Do đó
việc sử dụng máy tính vào giải quyết các bài toán là vấn đề vô cùng
quan trọng đóng vai trò then chốt trong các ngành kinh tế kỹ thuật.
Công việc lập trình đòi hỏi tất cả những người làm kỹ thuật phải nắm
vững để giải các bài toán chuyên ngành mình. Kỹ thuật lập trình là
môn nền tảng cơ sở được trang bị cho sinh viên của tất cả các ngành
kỹ thuật. Có rất nhiều ngôn ngữ lập trình dùng để cài xây dựng
chương trình nhưng trong tài liệu này chúng tôi tập trung vào ngôn
Ngôn ngữ lập trình C là được phát triển từ đầu thập niên 1970 bởi
Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ
này đã lan rộng ra nhiều hệ điều hành khác và trở thành một những
ngôn ngữ phổ dụng nhất. C là ngôn ngữ rất có hiệu quả và được ưa
chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được
dùng cho việc viết các ứng dụng. Ngoài ra, C cũng thường được
dùng làm phương tiện giảng dạy trong khoa học máy tính.
C++ được phát triển bởi Bjarne Stroustrup như là một bản nâng cao
của ngôn ngữ C. Những bổ sung nâng cao bắt đầu với sự thêm vào
của khái niệm lớp, tiếp theo đó là các khái niệm hàm ảo, chồng toán
Lập trình (Programming) là việc sử dụng các ngôn ngữ lập trình, các
đoạn mã lệnh và các tiện ích có sẵn để xây dựng các chương trình
phần mềm, trò chơi ứng dụng của hệ thống xử lý các trang web…
giúp người dùng có thể thực hiện các mệnh lệnh của máy tính cũng
như tương tác qua lại với nhau thông qua các thiết bị điện tử.
viết chương trình, là các đặc tả của một phép tính hoặc thuật toán.
Hay nói cách khác ngôn ngữ lập trình được thiết kế, chuẩn hóa để
Ngôn ngữ máy (mã máy: 0/1): nền tảng của bộ vi xử lý, ngôn ngữ
duy nhất máy tính hiểu. Các chương trình viết bằng các ngôn ngữ
Hợp ngữ: gần như ngôn ngữ máy, dùng ký hiệu gợi nhớ (mã lệnh
hình thức) biểu diễn các mã lệnh của máy. Chương trình hợp ngữ
Ngôn ngữ cấp cao: sử dụng danh từ, động từ, ký hiệu toán học, liên
hệ, thao tác luận lý. Chương trình viết bằng ngôn ngữ cấp cao được
trình biên dịch hoặc trình thông dịch chuyển thành các ngôn ngữ
máy chạy trên các loại máy tính khác nhau. Một số ngôn ngữ thông
Như trên đã trình bày, muốn chuyển từ chương trình nguồn sang
chương trình đích phải có chương trình dịch. Thông thường mỗi một
ngôn ngữ cấp cao đều có một chương trình dịch riêng nhưng chung
quy lại thì có hai cách dịch: thông dịch và biên dịch.
Thông dịch (interpreter): Là cách dịch từng lệnh một, dịch tới đâu
thực hiện tới đó. Chẳng hạn ngôn ngữ LISP sử dụng trình thông
dịch.
chương trình đích rồi sau đó mới thực hiện. Các ngôn ngữ sử dụng
Giữa thông dịch và biên dịch có khác nhau ở chỗ: Do thông dịch là
vừa dịch vừa thực thi chương trình còn biên dịch là dịch xong toàn
bộ chương trình rồi mới thực thi nên chương trình viết bằng ngôn
ngữ biên dịch thực hiện nhanh hơn chương trình viết bằng ngôn ngữ
thông dịch.
Một số ngôn ngữ sử dụng kết hợp giữa thông dịch và biên dịch
chẳng hạn như Java. Chương trình nguồn của Java được biên dịch
tạo thành một chương trình đối tượng (một dạng mã trung gian) và
khi thực hiện thì từng lệnh trong chương trình đối tượng được thông
Ngôn ngữ tự nhiên: Ngôn ngữ tự nhiên là ngôn ngữ của chúng ta
giải thuật giống như các ví dụ ở trên. Ví dụ: Ta có giải thuật giải
Nếu a=0 thì làm bước 3, nếu a khác không thì làm bước 4.
Giả mã: (Pseudocode) là một bản mô tả giải thuật ngắn gọn và không chính
thức, trong đó sử dụng những quy ước có cấu trúc của một số ngôn ngữ lập
trình (thường là Pascal) nhưng thường bỏ đi những chi tiết không cần thiết
vào: a,b,c
biệt dùng để mô tả giải thuật bằng các sơ đồ hình khối. Mỗi khối quy
Bảng 1.1 Quy tắc sử dụng các hình trong lưu đồ thuật toán.
Xử lý( Process)
Dấu cách hay khoảng trống, xuống hàng (\n) và tab (\t)
Định danh là dùng một dãy kí tự để gọi tên các đối tượng trong
-Ví dụ: nhap_mang_1_chieu (đúng), 2vonglap (sai: bắt đầu bằng chữ số),
để đỡ tốn công sức và chi phí thời gian, thường dùng quy tắc đặt tên
theo kiểu “lạc đà” (Camel case) hoặc theo phong cách Hung-ga-ri.
nguyên 1)
(-231231-1)
Để lưu trữ dữ liệu trong bộ nhớ máy tính do người lập trình định
Dùng thì phải khai báo, được khai báo bất kỳ ở vị trí nào trong
chương trình.
-Khai báo và khởi tạo: int x=7; int x(7); int x{7};
Không đổi trong suốt quá trình thực thi của chương trình.
Khai báo:
Ví dụ:
#define PI 3.14
Sự kết hợp các toán tử và các toán hạng. Biểu thức có thể là một
Toán tử có thể là dấu các phép toán: +, - * , /,… hay >, >=,…
Nếu kết quả của biểu thức là một số thì gọi là biểu thức, nếu kết quả
Biểu thức số học có thể được biểu diễn trong C/C++ bằng cách sử
-Ví dụ :
++i % 7
5 + (c = 3 + 8)
a * (b + c/d) - 22
Toán tử gán (=) có thể được dùng với bất kỳ biểu thức C/C++ hợp lệ
nào.
Variable_name = expression;
lệnh đơn.
Tuy nhiên, không thể áp dụng quy tắc trên khi khai báo biến
Các toán tử: +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=
-Ví dụ:
+a++;
+a+=1;
+a = a+1
Lưu ý: Các toán tử ++/-- đặt trước (tiền tố) hay sau (hậu tố) trong
biểu thức.
-Ví dụ:
B = 3;
Ví dụ
B = 3;
operators)
Toán tử Ý nghĩa
== Bằng
!= Khác
Toán tử Ý nghĩa
&& AND: cho kết quả true nếu cả 2 điều kiện có kết quả true,
|| OR: cho kết quả true nếu chỉ cần 1 trong 2 điều kiện có kết
quả true, còn lại cho false khi cả 2 điều kiện cùng false
! NOT: tác động lên các giá trị riêng lẻ, chuyển true thành
Toán tử Mô tả
Bitwise AND Mỗi vị trí của bit trả về kết quả là 1 nếu bit của hai
Bitwise OR Mỗi vị trí của bit trả về kết quả là 1 nếu bit của một
trong hai toán hạng là 1.
( x | y)
Bitwise NOT Ðảo ngược giá trị của toán hạng (1 thành 0 và ngược
( ~ x) lại).
( x <<n)
( x >>n)
Ví dụ
Toán tử Ý nghĩa
Điều kiện ? X : Y Toán tử điều kiện. Nếu điều kiện là true ? thì nó trả
, (phẩy) Toán tử phẩy làm cho một dãy hoạt động được thực
hiện. Giá trị của toàn biểu thức phẩy là giá trị của
biểu thức cuối cùng trong danh sách được phân biệt
m = (t = 2, t*t + 3); m = 7
. (dot) và -> Toán tử thành viên được sử dụng để tham chiếu các
(arrow) phần tử đơn của các lớp, các cấu trúc và union
về 2.
Ví dụ: reinterpret_cast<char*>(&x);
& Toán tử con trỏ & (toán tử 1 ngôi) trả về địa chỉ của
một biến.
Chuyển đổi kiểu ngầm định: Trong cùng 1 biểu thức, nếu các toán
hạng không cùng kiểu với nhau thì trước khi tính toán giá trị của
biểu thức, chương trình dịch sẽ thực hiện việc chuyển đổi kiểu ngầm
định (nếu được) theo nguyên tắc “Kiểu có phạm vi giá trị biểu diễn
nhỏ hơn sẽ được chuyển sang kiểu có phạm vị giá trị biểu diễn lớn
hơn”.
Ép kiểu (type casting): Trong một số trường hợp, ta bắt buộc phải sử
-Ví dụ 1.4 để tạo biểu thức số học hợp lệ sau 8.0 % 3, ta cần thực hiện ép
tiên) hiện)
[]
.→
+-
3 &*
new delete
sizeof
(type)
12 Bit OR | Left-to-right
13 Logical AND Left-to-right
14 Logical OR || Left-to-right
Assignment-level = *= /= %= += -= Right-to-left
?:
Câu lệnh:
Là một chỉ thị nhằm ra lệnh cho chương trình thực hiện một tác vụ
Mỗi câu lệnh có thể được viết trên một hoặc nhiều dòng.
Mỗi câu lệnh được kết thúc bằng dấu chấm phẩy (dấu chấm phẩy
Câu lệnh đơn: Là câu lệnh không chứa câu lệnh khác.
-Ví dụ: câu lệnh gán, lệnh khai báo, lệnh xuất nhập…
Câu lệnh phức: Là câu lệnh có chứa câu lệnh khác bên trong nó.
-Ví dụ: khối lệnh, câu lệnh rẽ nhánh, câu lệnh lặp, …
Khối lệnh:
Gồm một hoặc nhiều câu lệnh đơn được bao bởi cặp dấu ngoặc {}.
Một khối lệnh có thể lồng bên trong nó một hoặc nhiều khối lệnh
khác.
Nếu nội dung chú thích trên một dòng thì đặt sau dấu //
Nếu nội dung chú thích trên một dòng hoặc nhiều dòng thì đặt trong
-Ví dụ:
Chú thích có thể để bất kỳ vị trí nào trong chương trình, không ảnh
hưởng đến kết quả. Nên sử dụng để sau này đọc code dễ hiểu hơn.
hoặc:
cout << biểu thức 1 << biểu thức 1 << …<< biểu thức n;
Biểu thức là chuỗi ký tự thì đặt nội dung trong cặp dấu nháy đôi “ ”.
-Ví dụ:
#include<iostream>
using namespace std ;
int main()
{
cout<< "Ky Thuat Lap Trinh";
}
1.13.2 Nhập dữ liệu từ bàn phím với cin và toán tử ≫
cin >> biến_1 ;
cin.getline(s, n): nhập tối đa n-1 kí tự vào xâu s (mảng ký tự : char s[100])
setw(n): Qui định độ rộng dành để in ra các giá trị là n cột màn hình.
setprecision(n) kết hợp với fixed: Chỉ định số chữ số của phần thập phân in
Ví dụ:
#include<iostream>
using namespace std ;
int main()
{
int x;
float a, b;
char kitu, xau_kitu[25];
cin>> xau_kitu;
cout<< "---------------------------\n" ;
cout<<"Cac so da nhap:\n" << x << "\t" << a << "\t" << b << endl;
#include<iostream>
using namespace std ;
int main()
{
char hoten[30] ;
cout<< "Nhap vao ho va ten cua ban:\n" ;
cin.getline(hoten, 30) ; //Nhap cho chuoi hoten toi da 29 ki tu
cout<< "Xin chao: " << hoten ;
}
Ghi chú:
Ngoài ra trong C++ còn cung cấp các hàm cin.get(c), c = getchar(), c =
dùng các hàm getch() và getche() thì đầu chương trình ta cần khai báo
#include<conio.h>
1.14 Cấu trúc chung của một chương trình C++ (Structure of a
program)
Khai báo biến, hàm,..; Khai báo các biến toàn cục, khai báo
Định nghĩa các hàm (thân Định nghĩa thân hàm đã được khai báo
hàm)
Ví dụ:
#include<iostream>
#include<cmath>
using namespace std;
void swap(int &,int &);
int main()
{
int x,y;
cout<<"Nhap x,y = ";
cin>>x>>y;
swap(x,y);
cout<<" x= "<<x<<"y = "<<y;
return 0;
}
void swap(int &a,int &b)
{
int t;
t = a;
a = b;
b = t;
}
BÀI TẬP CHƯƠNG 1
Bài 1. Viết chương trình nhập vào 2 số nguyên a và b. Xuất ra màn hình giá
trị của a, b và kết của quả các phép tính: a+b, a-b, a/b, a*b, a%b (% là phép
Bài 2. Viết chương trình nhập vào 2 số thực a và b. Xuất ra màn hình giá trị
của a, b và kết của quả các phép tính: a+b, a-b, a/b, a*b.
Bài 3. Nhập vào từ bàn phím họ tên và năm sinh cho 2 người. Xuất ra màn
Bài 4. Viết chương trình tính khoảng cách từ điểm A(x, y, z) tới mặt phẳng:
ax + by + cz +d = 0
d(M,(P))=
Hình 1.1 Quy trình viết và thực thi chương trình