Giới thiệu  Bộ lệnh phù hợp với phương pháp lập trình có cấu trúc

 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 .

Giới thiệu  Nhược điểm:

 Cú pháp: lạ và khó học.

 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.

Giới thiệu  Ví dụ: Xuất ra màn hình dòng chữ: “Xin chao cac ban”

Hoặc

#include void main() {

#include int main() {

printf("Xin chao cac ban!");

}

printf("Xin chao cac ban!"); return 0;

}

Các khái niệm cơ bản 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, …) ,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 { }

Các khái niệm cơ bản  Chú thích: để chương trình dễ đọc và dễ hiểu hơn, trình

biên dịch sẽ bỏ qua nội dung chú thích khi biên dịch

chương trình.

 Ký hiệu:

 //: chú thích một dòng

 /* và */: chú thích nhiều dòng

Tập ký tự trong ngôn ngữ C/C++  Chữ cái: A, B, ..., Z và a, b, ..., 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: . , ; [] {} ? ! \ & | % # ...

 Không được dùng các ký hiệu như: α, φ, Ω, π, … hoặc tiếng

việt có dấu: â, ă, ô…

Từ khóa

auto break case char const

continue enum default extern do float double for else goto

if int long register return

short switch signed typedef sizeof union static unsigned struct void

volatile while bool catch class

delete friend inline new namespace

operator private protected public template

this throw try

Biến  Biến để lưu trữ 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 có tên và kiểu dữ liệu tương ứng.

 PHẢI khai báo BIẾN trước khi sử dụng

Kiểu dữ liệu  Kiểu cơ sở: Tích hợp sẵn trong ngôn ngữ

 Số nguyên  Số thực  Logic  Mảng  Chuỗi

 Kiểu người dùng định nghĩa

Kiểu dữ liệu  Kiểu số nguyên

STT

TÊN KIỂU

GHI CHÚ

KÍCH THƯỚC

Ký tự

1 byte

char

1

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

Số nguyên

int

4 bytes

6

unsigned int

Số nguyên dương

4 bytes

7

Số nguyên

long

4 bytes

8

unsigned long

Số nguyên dương

4 bytes

Kiểu dữ liệu  Kiểu số thực

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

 Kiểu logic

STT 1 2 3 float double long double 4 bytes 8 bytes 8 bytes

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

bool

Gồm 2 giá trị: true hoặc false

STT 1

Quy tắc đặt tên Quy tắc đặ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.

 Dễ hiểu, súc tích và gợi nhớ.

 Phân biệt chữ hoa và thường

Khai báo biến  Cú pháp: tênbiến;

Ví dụ:

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

int a; //Khai báo biến để lưu số nguyên tên a

tênbiến1, tênbiến2, tênbiến3;

Ví dụ:

int a, x, y;

Gán giá trị cho biến  Cú pháp: tênbiến = giá trị;

Ví dụ:

int a = 5;

float b = 5.4, c = 9.2;

char ch = ‘n’;

Định nghĩa hằng số  Hằng là đại lượng không thay đổi giá trị trong quá trình thi

hành chương trình

 Định nghĩa hằng: Dùng toán tử #define

Cú pháp: #define

Ví dụ: #define MAX 100

 Tên hằng số dùng chữ in HOA

Định nghĩa hằng số  Khai báo biến có giá trị hằng số dùng từ khoá const

 Cú pháp:

const = ;

Ví dụ:

const int MAX = 100;

Các loại hằng  Hằng số: là các giá trị xác định, một hằng số có thể là

 Số nguyên (có kiểu dữ liệu int, hay long int)

 Số thực (có kiểu dữ liệu là float, double, long double).

 Hằng ký tự: đặ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

Các loại hằng  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 kết thúc bằng ký tự null (\0)

Các phép toán

Stt Phép toán Ý nghĩa Ghi chú

Phép toán số học

2

Trừ

1 Cộng +

-

3 Nhân *

Đối với 2 số nguyên thì kết quả là chia lấy phần nguyên

Chỉ áp dụng cho 2 số nguyên

5

4 Chia /

%

Chia lấy phần dư

Các phép toán

Stt Phép toán Ý nghĩa Ghi chú

Phép toán so sánh

1 > Lớn hơn

2 < Nhỏ hơn

3 >= Lớn hơn hoặc bằng

Kết quả của phép toán so sánh là giá trị True hoặc False

5

= =

Bằng nhau

4 <= Nhỏ hơn hoặc bằng

6 != Khác nhau

Các phép toán

Phép toán logic

! NOT && AND || OR

Toán tử tăng giảm

++ Tăng 1

-- Giảm 1

Nếu toán tử tăng giảm đặt trước thì tính biểu thức tăng giảm trước rồi hoặc ngược lại.

Các phép toán Ví dụ:

int x = 5, y = 11;

int z = ++x + y++;

Kết quả: x=6; y=12; z=17

Các phép toán

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

Các phép toán  Toán tử điều kiện

(ĐK)?:

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

Thứ tự ưu tiên của các phép toán

Toán tử

Trình tự kết hợp

Độ ưu tiên

Từ trái qua phải

1

Từ phải qua trái

2

() [] ->

Từ trái qua phải

3

! ~ ++ -- - + * & sizeof

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

< <= >= >

== !=

Thứ tự ưu tiên của các phép toán

Toán tử

Trình tự kết hợp

Độ ưu tiên

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ừ phải qua trái

13

? :

Từ phải qua trái

14

= += -= *= /= %=

Các lỗi thường gặp  Không khai báo biến khi sử dụng

 Lưu giá trị vào biến không cùng kiểu.

 Sử dụng giá trị của phép chia không chính xác. Lỗi thường xuất hiện

trong các biểu thức có nhiều toán hạng, 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 biểu thức chứa nhiều loại dữ liệu và không biết chắc kiểu

dữ liệu kết quả.

Hàm nhập và xuất trong C  Thư viện:

 Hàm nhập: scanf(“chuỗi định dạng”, &tên biến);

Ví dụ:

int x;

scanf(“%d”, &x);

Hàm nhập và xuất trong C  Hàm xuất:

 Xuất hằng chuỗi: printf(“hằng chuỗi”);

 Xuất giá trị của biến: printf(“chuỗi định dạng”, đối số 1, đối số 2);

Ví dụ: printf(“Ngon ngu lap trinh C”);

float b=2.7;

Ví dụ: int a=5;

printf(“Gia tri cua bien a=%d, b=%f“, a, b);

 Ví dụ:

#include

void main ()

float giatri ;

{

printf ( “Nhap mot so thuoc [1..10]: “) ;

scanf ( “%f”, &giatri) ;

if (giatri >5)

printf ( “So vua nhap lon hon 5. \n”) ;

printf ( “%f la so ban nhap. “ , giatri);

}

Chuỗi định dạng

Stt

Kiểu

Ghi Chú

Định Dạng

Kiểu liên tục (số thực)

1

float

2

double

3

long double

%f %lf %lf

Chuỗi định dạng

Stt

Kiểu

Ghi chú

Định Dạng

Kiểu rời rạc (số nguyên)

1

char

Ký tự Số nguyên

2 3 4 5 6 7

%c %d %d %d %u %ld %lu %s

unsigned char Số nguyên dương int unsigned int long unsigned long char *

Số nguyên Số nguyên dương Số nguyên Số nguyên dương Chuỗi

Xuất ký tự đặc biệt

Ví dụ

Ký tự

Ý nghĩa

printf(“ \’ ”); Kết quả: ‘

Xuất dấu nháy đơn

\’

printf(“ \” ”); Kết quả: “

Xuất dấu nháy đôi

\”

Xuất dấu chéo ngược “\” pritnf(“ \\ ”); Kết quả: \

\\

Dùng để gán ký tự kết thúc của chuỗi

\0

Ký tự Null

\a

Alert : Tiếng bip

Xuất ký tự đặc biệt

Ví dụ

Ký tự

Ý nghĩa

printf(“xyz\tzyx”);

Tab vào một đoạn ký tự trắng

\t

print("xyz\t\bzyx”);

\b

Xuất lùi về sau

printf(“xyz\nzyx”);

\n hoặc endl Xuống dòng

printf("xyz\rzyx”);

\r

Về đầu dòng

Cách viết chương trình Mỗi lệnh trên một dòng, mỗi

lệnh kết thúc bằng chấm

phẩy (;).

Nếu lệnh quá dài thì có thể 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 cửa sổ lệnh.

Không nên đặt nhiều lệnh trên cùng một dòng.

Nên chú thích cho từng lệnh và khối lệnh

Bài tập 1. Cho biết kết quả của những lệnh sau:

int a, b; b=a++ + ++a + --a; printf("a=%d, b=%d“,a,b); Với a = 2 Kết quả:? Với a = 9 Kết quả:?

Bài tập 2. Cho biết kết quả của những lệnh sau:

int a, b; b= --a + --a; --b; printf(“a=%d, b=%d” , a, b); Với a = 19 Kết quả:? Với a = 10 Kết quả:?

Bài tập 3. Cho biết kết quả của những lệnh sau:

int a, b; b=a%2 + a/2 + --a; printf("a=%d, b=%d“,a,b); Với a = 17 Kết quả: ? Với a = 3 Kết quả: ?

Bài tập 4. Cho biết kết quả của những lệnh sau:

int a, b; b=a/3 + a--; printf("a=%d, b=%d“,a,b); Với a = 8 Kết quả: ? Với a =21 Kết quả: ?

Bài tập 4. Cho biết kết quả của những lệnh sau:

int a, b; b=a/3 + a--; printf("a=%d, b=%d“,a,b); Với a = 8 Kết quả: ? Với a =21 Kết quả: ?

 using  class  Tien$  default  yahoo.com

Bài tập 5. 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

Bài tập 6. 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”;

Bài tập 7. 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:

So dien thoai:

Bài tập* 8. 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.