56
LOGO Chương 2: Các thành phn trong ngôn ngC/C++ ThS. Chu Nguyên Hoàng Minh

Chuong 2@ngon ngu c

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Chuong 2@ngon ngu c

LOGO

Chương 2: Các thành phần trong

ngôn ngữ C/C++ThS. Chu Nguyên Hoàng Minh

Page 2: Chuong 2@ngon ngu c

Nội dung

v Tập các ký tự dùng trong C v Kiểu dữ liệuv Từ khóav Biếnv Hằngv Toán tửv Một số hàm thường dùngv Bài tập

[email protected]

Page 3: Chuong 2@ngon ngu c

[email protected]

Tập các ký tự dùng trong C

Page 4: Chuong 2@ngon ngu c

Mọi ngôn ngữ lập trình đều được xây dựng từ một bộ ký tự

nào đó. Các ký tự được nhóm lại theo nhiều cách khác nhau

để tạo nên các từ.

[email protected]

Page 5: Chuong 2@ngon ngu c

Ngôn ngữ C được xây dựng trên bộ ký tự sau: ü 26 chữ cái hoa : A B C .. Z ü 26 chữ cái thƣờng : a b c .. z ü 10 chữ số : 0 1 2 .. 9 üCác ký hiệu toán học : + - * / = ( ) üKý tự gạch nối : _ üCác ký tự khác : . , : ; [ ] {} ! \ & % # $ ... üDấu cách (space) dùng để tách các từ.

Ví dụ: chữ NGON NGU C có 10 ký tự, còn NGONNGUC chỉ có 8 ký tự.

[email protected]

Page 7: Chuong 2@ngon ngu c

Kiểu dữ liệuKiểu ký tự

Giá trị kiểu char chiếm 1 byte và biểu diễn được một ký tự trên bảng mã ASCII.

Ví dụ: ‘0’..’9’ có mã 48..57; ‘A’..’Z’ <--> 65..90; ‘a’..’z’ <--> 97..122

Kiểu logic

bool: Nhận giá trị true hoặc false

Ví dụ: bool t=true;

[email protected]

Kiểu Phạm vi Kích thướcchar -128 ... +127 1 byteunsigned char 0... 255 1 byte

Page 8: Chuong 2@ngon ngu c

Kiểu dữ liệu

Kiểu số nguyên

[email protected]

Kiểu Phạm vi Kích thướcint -32768 .. 32767 2 byteunsigned (int) 0 .. 65535 2 bytelong (int) -2.147.483.648 ..

2.147.483.6474 byte

unsigned long 0 .. 4.294.967.295 4 byte

Page 9: Chuong 2@ngon ngu c

Kiểu dữ liệu

Kiểu số thực

[email protected]

Kiểu Phạm vi Kích thướcfloat 3.4E-38 .. 3.4E+38 4 bytedouble 1.7E-308.. 1.7E+308 8 bytelong double 3.4E-4932..1.1E+4932 10 byte

Page 10: Chuong 2@ngon ngu c

[email protected]

Từ khóa (keyword)

Page 11: Chuong 2@ngon ngu c

Từ khóa

[email protected]

break case char const continue default do double

else float for goto if int long return

short sizeofstatic struct switchtypedef unsigned void while

Từ khóa là từ có ý nghĩa xác định dùng để khai báo dữ liệu, viết câulệnh… Trong C có khoảng 40 từ khóa, sau đây là một số từ khóathông dụng:

*Lưu ý: từ khóa phải viết chữ thường.

Page 12: Chuong 2@ngon ngu c

[email protected]

Biến

ü Biếnü Tên biếnü Khai báo biếnü Phạm vi của biến

Page 13: Chuong 2@ngon ngu c

Biến

v Một biến là 1 vùng nhớ trong RAM dùng lưu trữ dữ liệu tạm thời trong quá trình thực hiện chương trình. Việc truy xuất đến giá trị lưu trong vùng nhớ được thực hiện thông qua tên biến.

v Mỗi biến gắn liền với một kiểu dữ liệu và một định danh duy nhất gọi là tên biến.

[email protected]

Page 14: Chuong 2@ngon ngu c

Tên biến

1. Tên thường được đặt cho hằng, biến, mảng, con trỏ,nhãn… Chiều dài tối đa của tên là 32 ký tự.

2. Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tựchữ, số và dấu gạch dưới. Ký tự đầu của tên phải là chữhoặc dấu gạch dưới.

3. Tên không được đặt trùng với các từ khóa.

[email protected]

Page 15: Chuong 2@ngon ngu c

Tên biến

vChú ý: Trong C, tên bằng chữ thường và chữ hoa là khác

nhau ví dụ tên AB khác với ab. Trong C, ta thường dùng

chữ hoa để đặt tên cho các hằng và dùng chữ thường để đặt

tên cho hầu hết cho các đại lượng khác như biến, biến

mảng, hàm, cấu trúc. Tuy nhiên đây không phải là điều bắt

buộc.

[email protected]

Page 16: Chuong 2@ngon ngu c

Tên biếnVí dụ: Xét các loại tên biến sau:

[email protected]

abcDelta11deltaDelta 2Delta_2_deltaBinh_phuongDo

123CaseCong-2a$cong2Tinh(a)

Page 17: Chuong 2@ngon ngu c

Khai báo biến

Cách khai báo<kiểu_dữ_liệu> <tên_biến>;<tên_biến> = <giá_trị>;

Hoặc<kiểu_dữ_liệu> <tên_biến> = <giá_trị>;

[email protected]

Page 18: Chuong 2@ngon ngu c

Ví dụ:

[email protected]

void main(){ int a, b, c; a = 2; b = 3; c = 4; …

}

void main() { int a = 2, b = 3, c = 4; …

}

Page 19: Chuong 2@ngon ngu c

Khi khai báo biến nên đặt tên biến theo quy tắc HungarianNotation.

Ví dụ:int ituoi; //khai báo biến ituoi có kiểu intfloat fDTB; //khai báo biến fDTB có kiểu floatchar ckitu1, ckitu2; //khai báo biến ckitu1, ckitu2 có kiểu

char

[email protected]

Page 20: Chuong 2@ngon ngu c

Phạm vi của biến

v Khai báo biến ngoài (biến toàn cục): Vị trí biến đặt bên ngoài tất

cả các hàm, cấu trúc... Các biến này có ảnh hưởng đến toàn bộ

chương trình. Chu trình sống của nó là bắt đầu chạy chương trình

đến lúc kết thúc chương trình.

v Khai báo biến trong (biến cục bộ): Vị trí biến đặt bên trong hàm,

cấu trúc….Chỉ ảnh hưởng nội bộ bên trong hàm, cấu trúc đó….

Chu trình sống của nó bắt đầu từ lúc hàm, cấu trúc được gọi thực

hiện đến lúc thực hiện xong.

[email protected]

Page 21: Chuong 2@ngon ngu c

Ví dụ

[email protected]

#include"iostream.h"int x;void main() {

int a =5, b = 2;{

int a = 4;b = a+b;cout<<"\n In trong khoi 2: a="<<a<<", b ="<<b<<", x ="<<x;

}cout<<"\n In trong khoi 1: a="<<a<<", b ="<<b<<", x ="<<x;

}

Page 23: Chuong 2@ngon ngu c

Hằng là gì?

[email protected]

Hằng là những giá trị cố định thuộc phạm vi của một kiểu dữ liệu, không bị thay đổi khi thực hiện chương trình.

üHằng số nguyên

üHằng số thực

üHằng ký tự

üHằng chuỗi

Page 24: Chuong 2@ngon ngu c

Hằng số nguyên

[email protected]

Hằng int: -15 1234

#include"iostream.h"#define iTuoi 19 //pham vi toan cucvoid main(){

const int iNam=2012; //pham vi cuc bocout<<"Tuoi cua ban 1 nam sau: "<<iTuoi+1;cout<<"\nNam sau la nam: "<<iNam+1;cout<<endl;

}

Page 25: Chuong 2@ngon ngu c

Hằng số nguyên

[email protected]

v Hằng long: được viết: - 4567L hay - 4567lSố nguyên vượt ra ngoài miền xác định của int cũng được xem là hằng long

#include"iostream.h"#define TienVN 500000 //pham vi toan cuc#define TienUSD 2000L#define TIENUSD 2500lvoid main(){

const int TIENVN=2000000000; //pham vi cuc bocout<<"Tien VN sang USD: "<<TienVN/20000;cout<<"\nTien VN sang USD: "<<TIENVN/20000;cout<<"\nTien USD sang VN: "<<TienUSD*20000;cout<<"\nTien USD sang VN: "<<TIENUSD*20000;cout<<endl;

}

Page 26: Chuong 2@ngon ngu c

Hằng số thực

[email protected]

Hằng số thực: v Kiểu float : 123.45Fv Kiểu double: 123.45v Kiểu long double: 123.45L

#include"iostream.h"#define PI 3.14 //pham vi toan cuc#define fBankinh 4.8Fvoid main(){

cout<<"Dien tich hinh tron: "<<2*PI*fBankinh;cout<<endl;

}

Page 27: Chuong 2@ngon ngu c

Hằng ký tự

[email protected]

Hằng kiểu ký tự: Là 1 ký tự riêng biệt được viết trong 2 dấu nháy đơn.

Ví dụ: ‘A’

v Hằng ký tự thực sự là một số nguyên. Giá trị của hằng ký tự chính là mã ASCII của ký tự đó

Ví dụ: char c1 = ‘A’;

v Hằng ký tự có thể tham gia vào các phép toán như mọi số nguyên khác:

Ví dụ: ‘B’ - ‘A’ = 66 - 65 = 1

Page 28: Chuong 2@ngon ngu c

Hằng ký tự

[email protected]

#include"iostream.h"

#define cKytu 'A' //pham vi toan cuc

void main(){

const char cKYTU='a'; // pham vi cuc bo

cout<<"Ky tu sau A: "<<(char)(cKytu+1);

cout<<"\nKy tu sau a: "<<(char)(cKYTU+1);

cout<<"\nKhoang cach giua 2 ky tu: "<<'F'-'A';

cout<<endl;

}

Page 29: Chuong 2@ngon ngu c

Hằng ký tự

[email protected]

Một vài hằng ký tự đặt biệt ta cần phải sử dụng cách viết sau:

ØCác kí tự điều khiển: \n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên. \t : Canh cột tab ngang. \r : Nhảy về đầu hàng, không xuống hàng. \a : Tiếng kêu bip.

ØCác kí tự đặc biệt: \\ : In ra dấu \\" : In ra dấu " \' : In ra dấu '

Page 30: Chuong 2@ngon ngu c

Hằng chuỗi

[email protected]

Là chuỗi bất kỳ đặt trong cặp dấu ngoặc kép (“ “)

Ví dụ: “Lap trinh C”

vCác ký tự trong chuỗi có thể gồm các ký tự không có trên bàn phím, khi đó được biểu diễn sau ký hiệu (\)

vChuỗi ký tự trong C được lưu trữ dưới dạng mảng các ký tự và được C thêm ký tự ‘\0’ (null) cuối chuỗi.

Ví dụ: Phân biệt giữa ký tự ‘a’ và chuỗi “a”

vChuỗi rỗng được viết bằng 2 dấu nháy đôi liên tục: “”

Page 31: Chuong 2@ngon ngu c

Hằng chuỗi

[email protected]

#include"iostream.h"

#define cChuoi "Xin chao cac ban\nToi dang hoc lap trinh C"

void main(){

cout<<cChuoi;

cout<<endl;

}

Page 32: Chuong 2@ngon ngu c

[email protected]

Toán tử

ü Toán tử số họcü Toán tử tăng, giảmü Toán tử gánü Toán tử so sánhü Toán tử logicü Phép toán chuyển đổi kiểu dữ liệuü Biểu thức dấu chấm hỏi

Page 33: Chuong 2@ngon ngu c

Toán tử số học

[email protected]

Toán tử Ý nghĩa Cách dùng

+ Cộng hai toán hạng op1 + op2

- Trừ op1 - op2

* Nhân op1 * op2

/ Chia op1 / op2

% Chia lấy số dư op1 % op2

Page 34: Chuong 2@ngon ngu c

Toán tử số học

[email protected]

Ví dụ:

11+3=14

11-3=8

11*3=33

11/3=3

11%3=2

Page 35: Chuong 2@ngon ngu c

Toán tử tăng, giảm

[email protected]

v Phép toán tăng (++) : ++op; op++; Ví dụ: ++n; hay n++ <==> n = n+1;

v Phép toán giảm (--):--op; op--; Ví dụ: --n; hay n--; <==> n = n -1;

Trường hợp sử dụng toán tử này trong một biểu thức thì việc đặt trước hay sau sẽ ảnh hưởng đến kết quả bài toán:

v Đặt trước: để thay đổi giá trị cho n trước khi sử dụng n

v Đặt sau: để thay đổi giá trị cho n sau khi sử dụng n xong.Ví dụ: Với n = 4. Lệnh x = ++n; <==> n = n + 1; x = n;

Lệnh x = n++; <==> x = n; n = n + 1;

Page 36: Chuong 2@ngon ngu c

[email protected]

Vi ́ dụ:

int x = 4, y ;

y = x++;

y = ++x;

x++;

cout<<(++x);

Toán tử tăng, giảm

//Giá trị x gán cho y trước, rồi mới tăng lên một đơn vị, x=5, y=4

//Giá trị x tăng lên một đơn vị, rồi mới gán cho y, x=6, y=6

//Kết quả cho x = 7

//Tăng x lên một đơn vị rồi mới in ra 8

Page 37: Chuong 2@ngon ngu c

[email protected]

Câu 1. Cho biết giá trị của x, a và b sau khi thi hành đoạn mã sau.

int x, a = 6, b = 7;

x = a++ + b++;

a. x = 15, a = 7, b = 8

b. x = 15, a = 6, b = 7

c. x = 13, a = 7, b = 8

d. x = 13, a = 6, b = 7

Câu 1. Cho biết giá trị của x, a và b sau khi thi hành đoạn mã sau.

int x, a = 6, b = 7;

x = a++ + b++;

a. x = 15, a = 7, b = 8

b. x = 15, a = 6, b = 7

c. x = 13, a = 7, b = 8

d. x = 13, a = 6, b = 7

Câu 2. Cho khai báo sau:

int i=5, j;

j=i++;

j-=--i;

i--;

Cho biết kết quả của i và j là bao nhiêu.

a. i=4 và j=2 b. i=3 và j=1

c. i=2 và j=3 d. i=4 và j=0

Câu 2. Cho khai báo sau:

int i=5, j;

j=i++;

j-=--i;

i--;

Cho biết kết quả của i và j là bao nhiêu.

a. i=4 và j=2 b. i=3 và j=1

c. i=2 và j=3 d. i=4 và j=0

Page 38: Chuong 2@ngon ngu c

Toán tử gán

[email protected]

Toán tử Ví dụ Giải thích= int c=3, d=5, c=4;

+= c+=7 c=c+7

-= d-=4 d=d-4

*= e*=5 e=e*5

/= f/=3 f=f/3

%= g%=9 g=g%9

Page 39: Chuong 2@ngon ngu c

Toán tử so sánh

[email protected]

Toán tử Ý nghĩa Cách dùng

== Bằng op1 = = op2

!= Không bằng op1 != op2

< Nhỏ hơn op1 < op2

> Lớn hơn op1 > op2

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

>= Lớn hơn hoặc bằng op1 >= op2Toán tử so sánh cho ta giá trị đúng (1) hoặc giá trị sai (0). Nói cáchkhác, khi các điều kiện nêu ra là đúng thì nhận được giá trị 1, ngược lạinhận giá trị 0.

Page 40: Chuong 2@ngon ngu c

[email protected]

Kết quả

== A==B 0

!= A!=B 1

< A<B 1

> A>B 0

<= A<=B 1

>= A>=B 0

Ví dụ: int A=7, B=9;

Page 41: Chuong 2@ngon ngu c

Toán tử logic

[email protected]

Toán tử Ý nghĩa Cách dùng

&& Và (And) op1&& op2

|| Hoặc (Or) op1 || op2

! Phủ định (Not) ! op

Toán tử logic cho ta giá trị đúng (1) hoặc giá trị sai (0). Nói cáchkhác, khi các điều kiện nêu ra là đúng thì nhận được giá trị 1, ngược lạinhận giá trị 0.

Page 42: Chuong 2@ngon ngu c

Toán tử logic

[email protected]

op !op

1 0

0 1

op1 op2 op1&&op2 op1||op2

1 1 1 1

0 1 0 1

1 0 0 1

0 0 0 0

Page 43: Chuong 2@ngon ngu c

Toán tử logic

[email protected]

Kết quả

&& (A>B)&&(B>C) 0

|| (B>C)||(C>D) 1

! !(A>B) 1

Ví dụ: int A=6, B=9, C=7, D=20;

Page 44: Chuong 2@ngon ngu c

Thứ tự ưu tiên của các toán tử

[email protected]

Page 45: Chuong 2@ngon ngu c

Phép toán chuyển đổi kiểu dữ liệu

[email protected]

v Phép chuyển kiểu cho ra giá trị thuộc kiểu chỉ định.

v Bản thân của biểu thức thì không thay đổi kiểu.

Ví dụ 1: Đổi số thực sang số nguyên có làm tròn số

int a; float x;

a = (int)( x + 0.5);

Ví dụ 2: x1 và x2 bằng bao nhiêu ?

int a = 5, b = 2; float x1, x2;

x1 = (float) a / b;

x2 = a / b;

(tênkiểu) Biểuthức

Page 46: Chuong 2@ngon ngu c

Biểu thức dấu chấm hỏi

[email protected]

Nếu <điều kiện> đúng thì trả về giá trị của <biểu thức 1>; ngược lại trả về giá trị của <biểu thức 2>

Ví dụ: Tìm số lớn nhất trong 2 số bất kỳ nhập từ bàn phím.void main(){

float a, b, c;cout<<“\n Nhập số thứ nhất: “; cin>>a;cout<<“\nNhap so thứ hai: “; cin>>b;c = (a > b) ? a : b;cout<<“\nSo lon nhat la: “<<c;

}

(điều kiện) ? <biểu thức 1> : <biểu thức 2> ;

Page 47: Chuong 2@ngon ngu c

[email protected]

Một số hàm thường dùng

ü Hàm đại sốü Hàm lượng giácü Hàm xử lý ký tự

Page 48: Chuong 2@ngon ngu c

Hàm đại số

[email protected]

1. Tính trị tuyệt đối của số nguyên num: int abs(int num); 2. Tính trị tuyệt đối số nguyên kiểu long: long labs(long num);3. Tính trị tuyệt đối của 1 số thực x: double fabs(double x); 4. Tìm số nguyên lớn nhất ≤ x: double floor(double x);5. Tìm số nguyên bé nhất ≥ x: double ceil(double x);6. Tìm phần dư của y/x: double fmod(double y, double x);7. Tính căn bặc 2 của x: double sqrt(double x);8. Tính yx : double pow(double y, double x); 9. Tính ex : double exp(double x);10. Tính lnx: double log(double x);11. Tính log10x : double log10(double x);

Page 49: Chuong 2@ngon ngu c

Hàm lượng giác

[email protected]

1. Tính sin(x): double sin(double x);2. Tính cosine của x: double cos(double x);3. Tính tangent của x: double tan(double x);4. Tính arc cosine của (x): double acos(double x);5. Tính arc sine của (x) double asin(double x);6. Tính arc tangent của x: double atan(double x);

Page 50: Chuong 2@ngon ngu c

Hàm xử lý ký tự (thư viện ctype.h)

[email protected]

1. int tolower(int ch): tolower(‘A’) à ‘a’2. int toupper(int ch): toupper(‘a’) à ‘A’Nhóm hàm kiểm tra ký tự:3. int islower(int ch) Là chữ thường4. int isupper(int ch) Là chữ in hoa5. int isdigit( int ch) Là số6. int isalpha(int ch) Là mẫu tự 7. int isalnum(int ch) Là số hay mẫu tự8. int isspace(int ch) Là dấu cách.

Page 52: Chuong 2@ngon ngu c

[email protected]

1. Nếu biết số giây tính từ nửa đêm. Hãy viết chương trình tính giờ, phút, giây hiện tại.HD: Giờ = số giây / 3600; Phút = (số giây % 3600) / 60;

Giây = số giây % 602. Viết chương trình nhập vào giờ (h), phút (m) giây (s). Sau đó

nhập thêm số giây (a). Máy tính toán và in ra màn hình:§ Lúc đầu là: h giờ : m phút : s giây.§ Nếu bạn cộng thêm : a giây§ Giờ mới là: x giờ : y phút : z giây.

3. Viết chương trình nhập giờ phút giây khởi hành và giờ phút giây đến đích của một vận động viên điền kinh. In thời gian chạy của vận động viên theo giờ phút giây.

Page 53: Chuong 2@ngon ngu c

[email protected]

4. Nhập một góc tính bằng độ, đổi ra đơn vị radian, và tính sin, cos, tang, cotang của góc đó

Công thức chuyển đổi:

5. Giải tam giác khi biết cạnh a, góc B, góc C (theo đơn vị độ). Tính cạnh b,c, góc A(theo radian và độ). Áp dụng: a/sinA=b/sinB=c/sinC

hay a2 = b2 + c2 + 2bcCosA và A+B+C=180o

6. Cho tam giác ABC với 3 đỉnh A, B, C có toạ độ là: (x1, y1); (x2, y2); (x3, y3). Hãy tính:

a) Chu vi tam giác. b) Diện tích tam giác

Page 54: Chuong 2@ngon ngu c

[email protected]

7. Nhập vào độ dài ba cạnh a, b, c của tam giác. Tính và in ra :

Page 55: Chuong 2@ngon ngu c

[email protected]

7. Nhập vào độ dài ba cạnh a, b, c của tam giác. Tính và in ra :