Upload
satonlinedottk
View
810
Download
2
Embed Size (px)
DESCRIPTION
Citation preview
LOGO
Chương 2: Các thành phần trong
ngôn ngữ C/C++ThS. Chu Nguyên Hoàng Minh
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
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ừ.
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ự.
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;
Kiểu Phạm vi Kích thướcchar -128 ... +127 1 byteunsigned char 0... 255 1 byte
Kiểu dữ liệu
Kiểu số nguyên
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
Kiểu dữ liệu
Kiểu số thực
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
Từ khóa
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.
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.
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.
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.
Tên biếnVí dụ: Xét các loại tên biến sau:
abcDelta11deltaDelta 2Delta_2_deltaBinh_phuongDo
123CaseCong-2a$cong2Tinh(a)
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ị>;
Ví dụ:
void main(){ int a, b, c; a = 2; b = 3; c = 4; …
}
void main() { int a = 2, b = 3, c = 4; …
}
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
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.
Ví dụ
#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;
}
Hằng là gì?
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
Hằng số nguyên
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;
}
Hằng số nguyên
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;
}
Hằng số thực
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;
}
Hằng ký tự
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
Hằng ký tự
#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;
}
Hằng ký tự
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 '
Hằng chuỗi
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: “”
Hằng chuỗi
#include"iostream.h"
#define cChuoi "Xin chao cac ban\nToi dang hoc lap trinh C"
void main(){
cout<<cChuoi;
cout<<endl;
}
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
Toán tử số học
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
Toán tử số học
Ví dụ:
11+3=14
11-3=8
11*3=33
11/3=3
11%3=2
Toán tử tăng, giảm
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;
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
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
Toán tử gán
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
Toán tử so sánh
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.
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;
Toán tử logic
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.
Toán tử logic
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
Toán tử logic
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;
Phép toán chuyển đổi kiểu dữ liệu
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
Biểu thức dấu chấm hỏi
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> ;
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ự
Hàm đại số
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);
Hàm lượng giác
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);
Hàm xử lý ký tự (thư viện ctype.h)
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.
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.
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
7. Nhập vào độ dài ba cạnh a, b, c của tam giác. Tính và in ra :
7. Nhập vào độ dài ba cạnh a, b, c của tam giác. Tính và in ra :