You are on page 1of 44

1

*Ngôn ngữ C do Dennis Ritchie xây dựng từ


năm 1972 tại phòng thí nghiệm Bell
Telephone với mục đích tạo ngôn ngữ để
viết HĐH UNIX. Song nhờ có các tính năng
ưu việt và tính mềm dẻo nên được giới tin
học chấp nhận
*Năm 1978, xuất bản quyển sách “The C
programming language” do Kernighan và
Ritchie viết.
2
*C++ dựa trên ngôn ngữ lập trình C
*C++ được phát minh bởi Bijarne Stroustroup,
bắt đầu năm 1979
*Các trình biên dịch phổ biến: Borland C++,
Microsoft Visual C++

3
* Bộ lệnh phù hợp với phương pháp lập trình có
cấu trúc module, có thể sử dụng nhiều lần trong
chương trình hoặc chương trình khác, hỗ trợ lập
trình hướng đối tượng.
* Kiểu dữ liệu phong phú, cho phép định nghĩa
kiểu dữ liệu mới.
* Linh động về cú pháp, ít từ khóa.
* Ngôn ngữ mạnh và mềm dẻo, được dùng để viết
OS, chương trình điều khiển, soạn thảo văn bản,
đồ hoạ, bảng tính… và các chương trình dịch cho
các ngôn ngữ khác . 4
*Cú pháp thuộc loại lạ và khó học. Nếu người lập
trình đã học qua một ngôn ngữ khác thì sẽ dễ
dàng tiếp cận.
*Một số ký hiệu có nhiều nghĩa khác nhau. Ví dụ:
dấu “*” là toán tử nhân, là khai báo con trỏ, là
toán tử thay thế, … Việc sử dụng đúng nghĩa các
toán tử phụ thuộc vào ngữ cảnh sử dụng.
*Việc truy nhập tự do vào dữ liệu, việc trộn lẫn
các kiểu dữ liệu… làm cho chương trình có phần
bất ổn.
5
Xuất ra màn hình dòng chữ: “Xin chao cac ban”

//Viết bằng VC++6.0 //Viết bằng VC++2003


//hoặc BC++3.1 //hoặc 2005, 2008, …
#include <iostream.h> #include <iostream>
using namespace std;

void main() void main()


{ {
cout<<"Xin chao cac ban"; cout<<"Xin chao cac ban";
} }

6
*Lệnh
Lệnh thực hiện một chức năng nào đó
(khai báo, gán, xuất, nhập, …) và được
kết thúc bằng dấu chấm phẩy (;)

*Khối lệnh
Khối lệnh gồm nhiều lệnh và được đặt
trong cặp dấu ngoặc { }
7
*Từvị trí cụ thể đến cuối dòng: dùng //
ngay tại vị trí đó.
*Tạo nhiều dòng ghi chú: dùng cặp ký
tự /* ngay trước dòng đầu tiên, và cặp ký
tự */ ngay sau dòng cuối cùng.

8
*Chữ cái hoa: A, B, ..., Z
*Chữ cái thường: a, b, c, ..., z
*Chữ số: 0, 1, ..., 9
*Các ký hiệu toán học: +, -, *, /, =, (, ),...
*Ký hiệu gạch nối: _
*Các ký hiệu đặc biệt như: . ,  ; [] {} ? ! \ & | % # ...
*Không được dùng các ký hiệu như: α, φ, Ω, π,
… hoặc tiếng việt có dấu: â, ă, ô…
9
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while bool catch class
delete friend inline new namespace
operator private protected public template
this throw try
10
*Một biến đại diện cho một vùng nhớ hay tập
các vùng nhớ trên bộ nhớ chính của máy
tính. Tên biến được dùng để tham khảo đến
những vùng nhớ này.
*Biến để lưu trữ các giá trị do người dùng
nhập vào hoặc các giá trị tạm thời trong quá
trình tính toán.
*Mỗi biến sẽ có tên và kiểu dữ liệu tương
ứng. Kiểu dữ liệu của biến xác định những
giá trị kiểu nào có thể được lưu trong biến
(ví dụ số hay chữ…).
*PHẢI khai báo BiẾN trước khi sử dụng
11
* Kiểu cơ sở
Tích hợp sẵn trong ngôn ngữ
* Số nguyên
* Số thực
* Luận lý
* Mảng (xét sau)
* Chuỗi (xét sau)
* Kiểu tự định nghĩa (xét sau)
Dùng những kiểu cơ sở để xây dựng thành
những kiểu dữ liệu mới cho phù hợp với bài
toán. 12
STT TÊN KIỂU GHI CHÚ KÍCH THƯỚC
Ký tự 1 byte
1 char
Số nguyên 1 byte
2 unsigned char Số nguyên dương 1 byte
3 short Số nguyên 2 bytes
4 unsigned short Số nguyên dương 2 bytes
5 int Số nguyên 4 bytes
6 unsigned int Số nguyên dương 4 bytes
7 long Số nguyên 4 bytes
8 unsigned long Số nguyên dương 4 bytes
13
STT TÊN KIỂU GHI CHÚ KÍCH THƯỚC
1 float   4 bytes
2 double   8 bytes
3 long double   8 bytes

STT TÊN KIỂU GHI CHÚ KÍCH THƯỚC


1 bool Gồm 2 giá trị: true hoặc false
14
Dùng để đặt tên biến, tên hằng, tên hàm, …
*Bắt đầu bằng một ký tự.
*Các ký tự trong tên biến chỉ có thể là các ký
tự chữ, số hoặc dấu gạch dưới (_)
*Không được trùng với các từ khoá.
*Không được trùng với phạm vi khai báo.
*Tên dễ hiểu, súc tích và gợi nhớ.
*Phân biệt chữ hoa và thường
15
Cú pháp
<Kiểu dữ liệu> tênbiến;
Ví dụ:
int a; //Khai báo biến để lưu số nguyên tên a
float c; //Khai báo biến để lưu số thực tên c
Khai báo nhiều biến cùng kiểu
<Kiểu dữ liệu> tênbiến1, tênbiến2, tênbiến3;
Ví dụ:
int a, x, y;
16
<Kiểu dữ liệu> tênbiến = giá trị;

Ví dụ:
int a = 5;
float b = 5.4, c = 9.2;
char ch = ‘n’;

17
*Hằng là đại lượng không thay đổi giá trị trong quá trình thi
hành chương trình
*Dùng toán tử #define
Cú pháp: #define <tên_hằng> <giá_trị_h ằng>
Ví dụ:  #define MAX 100
*Biến hằng được định nghĩa nhờ từ khoá const với cú pháp như
sau:
const <kiểu_dữ_liệu> <tên_biến> = <giá_trị>;
Ví dụ: const  int  MAX = 100;

Tên hằng số nên viết bằng chữ in HOA


18
*Hằng số: Đó là các giá trị xác định, một hằng số có
thể là nguyên (có kiểu dữ liệu int, hay long int) hay
thực (có kiểu dữ liệu là float, double, long double).
*Hằng ký tự: Được đặt trong dấu nháy đơn. Ví dụ: 'A',
'a' tương ứng với giá trị nguyên 65, 97 trong bảng
mã ASCII.
*Hằng chuỗi: Là tập hợp các ký tự được đặt trong cặp
dấu nháy kép " ". Ví dụ: “Lap trinh C"
*Chú ý: Một hằng chuỗi được trữ tận cùng bằng ký tự
null (\0)

19
PHÉP
STT Ý NGHĨA GHI CHÚ
TOÁN
PHÉP TOÁN SỐ HỌC
1 + Cô ̣ng
2 - Trừ
3 * Nhân
Đối với 2 số nguyên thì kết quả là
4 / Chia
chia lấy phần nguyên
5 % Chia lấy phần dư Chỉ áp dụng cho 2 số nguyên
PHÉP TOÁN QUAN HỆ
1 > Lớn hơn
2 < Nhỏ hơn
3 >= Lớn hơn hoă ̣c bằng
4 <= Nhỏ hơn hoă ̣c bằng
5 == Bằng nhau 20
6 != Khác nhau
PHÉP TOÁN LOGIC
1 ! NOT
2 && AND
3 || OR
TOÁN TỬ TĂNG GIẢM
1 ++ Tăng 1 Nếu toán tử tăng giảm đă ̣t
trước thì tăng giảm trước rồi
2 -- Giảm 1
tính biểu thức hoă ̣c ngược lại.
PHÉP TOÁN THAO TÁC TRÊN BIT
1 & AND
2 | OR
3 ^ XOR
4 << Dịch trái
5 >> Dịch phải
6 ~ Lấy phần bù theo bit 21
Ví dụ:
int x = 5, y = 11;
int z = ++x + y++;
Kết quả: x=6; y=12; z=17

Toán tử điều kiện


(ĐK)?<BT cho trường hợp đúng>:<BT cho trường hợp sai>
Ví dụ:
int n;
(n%2==0)? n ++ : n --;

 nếu n = 10 thì giá trị n = 11


 nếu n = 21 thì giá trị n = 20 22
Toán tử Độ ưu tiên Trình tự kết hợp
() [] -> 1 Từ trái qua phải
! ~ ++ -- - + * & sizeof 2 Từ phải qua trái
* / % 3 Từ trái qua phải
+ - 4 Từ trái qua phải
<< >> 5 Từ trái qua phải
< <= >= > 6 Từ trái qua phải
== != 7 Từ trái qua phải
& 8 Từ trái qua phải
| 9 Từ trái qua phải
^ 10 Từ trái qua phải
&& 11 Từ trái qua phải
|| 12 Từ trái qua phải
? : 13 Từ phải qua trái
= += -= *= /= %= 23 14 Từ phải qua trái
*Quên khai báo các biến sử dụng trong
chương trình.
*Lưu một giá trị vào một biến nhưng không
cùng kiểu dữ liệu với biến.
*S ử dụng biến trong một biểu thức khi nó
chưa có giá trị. Lỗi này thì không được phát
hiện bởi trình biên dịch, khi đó giá trị của
biến là một giá trị bất kỳ và kết quả của biểu
thức là vô nghĩa. 24
*Sử dụng giá trị của phép chia không chính xác. Lỗi
này thường xuất hiện trong các biểu thức có nhiều
toán hạng và lỗi này rất khó phát hiện.
Ví dụ: 3.2 + 2/3 + 1.5 thì sẽ cho kết quả sẽ bằng
4.7 thay vì kết quả đúng phải bằng
5.36666666666667
*Sử dụng một biểu thức mà trong đó chứa nhiều loại
dữ liệu nhưng lại không biết chắc chắn kiểu dữ liệu
của kết quả.
25
*Thư viện hàm: iostream.h
*Hàm nhập giá trị từ bàn phím: cin>>tênbiến;
Ví dụ: int a;
cin>>a; //Người dùng nhập giá trị từ phím sẽ lưu vào
biến a
*Hàm xuất giá trị ra màn hình: cout<<tênbiến hoặc chuỗi ký
tự;
Ví dụ: int a = 5;
cout<<“Gia tri cua a = “<<a;
Các biến và chuỗi cách nhau bởi dấu <<
(chuỗi nằm trong cặp dấu nháy kép “” )
26
Thư viện iomanip.h

cout<<setw(n)<<tênbiến;
 Chừa 1 khoảng n ký tự để xuất giá trị

Ví dụ:
int a=7, b=9;
cout<<a<<setw(5)<<b;//Chừa 5 vị trí để xuất giá
trị b
Kết quả: 7 9
27
cout<<setprecision(n);
 Xuất số thập phân gồm n chữ số lẻ (phần thập
phân)
Ví dụ:
float a=7.56745, b=5.339; Kết quả:
cout<<a<<endl; 7.56745
cout<<setprecision(2)<<a<<endl; 7.57
cout<<setprecision(1)<<b<<endl; 5.3
cout<<setprecision(5)<<b; 5.339
28
* Thư viện <stdio.h>
* Xuất:
printf(“hằng chuỗi”);
Vd: printf(“Xin chao cac ban”);
printf(“chuỗi định dạng”, đối số 1, đối số 2);
Vd: int a=5;
float b=2.7;
printf(“Gia tri cua bien a=%d, b=%f“, a, b);
* Nhập:
scanf(“chuỗi định dạng”, &tên biến);
Vd: int x;
scanf(“%d”, &x);
29
#include <stdio.h>
void main ()
{
float number ;
 
printf ( “Nhap mot so thuoc [1..10]: “) ;
scanf ( “%f”, &number) ;
if (number >5)
printf ( “So ban nhap lon hon 5. \n”) ;
printf ( “%f la so ban nhap. “ , number);
}
30
STT KIỂU GHI CHÚ ĐỊNH DẠNG
KIỂU LIÊN TỤC (SỐ THỰC)
1 float   %f
2 double   %lf
3 long double   %lf
KIỂU RỜI RẠC (SỐ NGUYÊN) 
Ký tự %c
1 char
Số nguyên %d
2 unsigned char Số nguyên dương %d
3 int Số nguyên %d
4 unsigned int Số nguyên dương %u
5 long Số nguyên %ld
6 unsigned long Số nguyên dương %lu
7 char * Chuỗi %s
31
Ký tự Ý nghĩa Ví dụ
Xuất dấu nháy cout<<“ \’ ”;
\’
đơn Kết quả: ‘
cout<<“ \” ”;
\” Xuất dấu nháy đôi
Kết quả: “
Xuất dấu chéo cout<<“ \\ ”;
\\
ngược “\” Kết quả: \
Dùng để gán ký tự
\0 Ký tự Null
kết thúc của chuỗi
\a Alert : Tiếng bip
32
Ký tự Ý nghĩa Ví dụ
Tab vào một cout<<"xyz\tzyx”;
\t
đoạn ký tự trắng Kết quả: xyz zyx
cout<<"xyz\t\bzyx”;
\b Xuất lùi về sau
Kết quả: xyzzyx
cout<<"xyz\nzyx”;
\n hoặc
Xuống dòng Kết quả: xyz
endl
zyx
cout<<"xyz\rzyx”;
\r Về đầu dòng 33
Kết quả: zyx
*Mỗi lệnh nằm trên một dòng. Cuối dòng
lệnh PHẢI có dấu chấm phẩy (;).
*Lệnh quá dài có thể được viết thành
nhiều dòng sao cho mỗi lệnh phải được
quan sát trọn vẹn trong pham vi cửa sổ
lệnh.

34
*Không nên đặt nhiều lệnh trên cùng
một dòng, ngay cả các khai báo biến,
nếu các biến có khác kiểu cũng nên
đặt trên các dòng khác nhau.
*Có các chú thích, ghi chú đầy đủ
*Chương trình phân cấp các khối lệnh
con theo từng cột
35
36
37
38
Cho biết kết quả của những lệnh sau:
int a, b;
b=a++ + ++a + --a;
cout<<"a=“<<a<<“, b=“<<b;
Với a = 2 Kết quả:
Với a = 9 Kết quả:
 ----------------------------------------------------------------------
int a, b;
b=--a + --a;
--b;
cout<<"a=“<<a<<“, b=“<<b;
Với a = 19 Kết quả:
Với a = 10 Kết quả:
39
int a, b;
b=a%2 + a/2 + --a;
cout<<"a=“<<a<<“, b=“<<b;
Với a = 17 Kết quả:
Với a = 3 Kết quả:
------------------------------------------------------------------------------------
int a, b;
b=a/3 + a--;
cout<<"a=“<<a<<“, b=“<<b;
Với a = 8 Kết quả:
Với a =21 Kết quả:
-----------------------------------------------------------------------------------
int k;
cout<<(k%3==0)?k++: k--;
Với k =10 Kết quả:
Với k =15 Kết quả: 40
Các định danh nào sau đây là không hợp lệ?
*Main
*Tinh Tong
*Tinh-Tong
*Tinh_Tong
*x_Mu_2
*2_Mu_2
*using
*class
*Tien$
*default
*yahoo.com 41
* Cho biết những chỗ sai và sửa lại cho đúng
int n = -100;
uint i = -100;
int = 2.9;
long m = 2, p = 4;
int 2k;
float y = y * 2;
char ch = “b”;
*Viết chương trình in ra màn hình thông tin cá nhân
theo mẫu sau:
Ho ten:
Lop:
Thong tin lien lac:
Dia chi:
42
So dien thoai:
Mô tả giải thuật bằng mã giả, lưu đồ và viết
các chương trình sau:
*Viết chương trình nhập vào giờ phút và
giây, đổi ra giây và xuất kết quả ra màn
hình.
*Viết chương trình nhập vào 3 số nguyên a,
b và c, tính giá trị trung bình cộng của 3 số
trên và xuất kết quả ra màn hình.

43
* Viết chương trình cho phép nhập vào một
số đo nhiệt độ theo độ Fahrenheit và xuất
ra nhiệt độ tương đương của nó theo độ
Celsius, sử dụng công thức chuyển đổi:
5 0
0
C  ( F  32)
9
* Viết chương trình nhập vào 3 số nguyên a, b
và c, cho biết 3 số vừa nhập có thứ tự tăng
dần (a<b<c) không? Và xuất kết quả.
44

You might also like