Bài giảng Lập trình cơ bản - truongkinhtethucpham.commai_non
Tài liệu này trình bày tổng quan về ngôn ngữ lập trình C - ngôn ngữ lập trình cơ bản mà hầu như những ai học về công nghệ thông tin cũng cần phải biết đến nó.
4. 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ừ.
minhcnh@gmail.com
5. 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ự.
minhcnh@gmail.com
7. Kiểu dữ liệu
Kiểu ký tự
Kiểu Phạm vi Kích thước
char -128 ... +127 1 byte
unsigned char 0... 255 1 byte
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;
minhcnh@gmail.com
8. Kiểu dữ liệu
Kiểu số nguyên
Kiểu Phạm vi Kích thước
int -32768 .. 32767 2 byte
unsigned (int) 0 .. 65535 2 byte
long (int) -2.147.483.648 .. 4 byte
2.147.483.647
unsigned long 0 .. 4.294.967.295 4 byte
minhcnh@gmail.com
9. Kiểu dữ liệu
Kiểu số thực
Kiểu Phạm vi Kích thước
float 3.4E-38 .. 3.4E+38 4 byte
double 1.7E-308.. 1.7E+308 8 byte
long double 3.4E-4932..1.1E+4932 10 byte
minhcnh@gmail.com
11. Từ khóa
Từ khóa là từ có ý nghĩa xác định dùng để khai báo dữ liệu, viết câu
lệnh… Trong C có khoảng 40 từ khóa, sau đây là một số từ khóa
thông dụng:
break else short
case float sizeof
char for static
const goto struct
continue if switch
default int typedef
do long unsigned
double return void
while
*Lưu ý: từ khóa phải viết chữ thường.
minhcnh@gmail.com
12. Biến
ü Biến
ü Tên biến
ü Khai báo biến
ü Phạm vi của biến
minhcnh@gmail.com
13. 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.
minhcnh@gmail.com
14. 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.
minhcnh@gmail.com
15. 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.
minhcnh@gmail.com
16. Tên biến
Ví dụ: Xét các loại tên biến sau:
abc 123
Delta1 Case
Cong-2a
1delta
$cong2
Delta 2 Tinh(a)
Delta_2
_delta
Binh_phuong
Do
minhcnh@gmail.com
17. 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ị>;
minhcnh@gmail.com
18. Ví dụ:
void main(){ void main() {
int a, b, c; int a = 2, b = 3, c = 4;
a = 2; …
b = 3; }
c = 4;
…
}
minhcnh@gmail.com
19. Khi khai báo biến nên đặt tên biến theo quy tắc Hungarian
Notation.
Ví dụ:
int ituoi; //khai báo biến ituoi có kiểu int
float fDTB; //khai báo biến fDTB có kiểu float
char ckitu1, ckitu2; //khai báo biến ckitu1, ckitu2 có kiểu
char
minhcnh@gmail.com
20. 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.
minhcnh@gmail.com
21. 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;
}
minhcnh@gmail.com
23. 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
minhcnh@gmail.com
24. Hằng số nguyên
Hằng int: -15 1234
#include"iostream.h"
#define iTuoi 19 //pham vi toan cuc
void main(){
const int iNam=2012; //pham vi cuc bo
cout<<"Tuoi cua ban 1 nam sau: "<<iTuoi+1;
cout<<"nNam sau la nam: "<<iNam+1;
cout<<endl;
}
minhcnh@gmail.com
25. Hằng số nguyên
v Hằng long: được viết: - 4567L hay - 4567l
Số 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 2500l
void main(){
const int TIENVN=2000000000; //pham vi cuc bo
cout<<"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;
}
minhcnh@gmail.com
26. Hằng số thực
Hằng số thực:
v Kiểu float : 123.45F
v Kiểu double: 123.45
v Kiểu long double: 123.45L
#include"iostream.h"
#define PI 3.14 //pham vi toan cuc
#define fBankinh 4.8F
void main(){
cout<<"Dien tich hinh tron: "<<2*PI*fBankinh;
cout<<endl;
}
minhcnh@gmail.com
27. 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
minhcnh@gmail.com
28. 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;
}
minhcnh@gmail.com
29. 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 '
minhcnh@gmail.com
30. 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: “”
minhcnh@gmail.com
32. 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
minhcnh@gmail.com
33. 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
minhcnh@gmail.com
34. Toán tử số học
Ví dụ:
11+3=14
11-3=8
11*3=33
11/3=3
11%3=2
minhcnh@gmail.com
35. 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;
minhcnh@gmail.com
36. Toán tử tăng, giảm
Ví dụ:
int x = 4, y ;
y = x++; //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
y = ++x; //Giá trị x tăng lên một đơn vị, rồi mới gán cho y, x=6, y=6
x++; //Kết quả cho x = 7
cout<<(++x); //Tăng x lên một đơn vị rồi mới in ra 8
minhcnh@gmail.com
37. 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
Câu 2. Cho khai báo sau:
b. x = 15, a = 6, b = 7
int i=5, j;
c. x = 13, a = 7, b = 8
j=i++;
d. x = 13, a = 6, b = 7
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
minhcnh@gmail.com
39. 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 >= op2
Toán tử so sánh cho ta giá trị đúng (1) hoặc giá trị sai (0). Nói cách
khác, khi các điều kiện nêu ra là đúng thì nhận được giá trị 1, ngược lại
nhận giá trị 0.
minhcnh@gmail.com
41. 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ách
khác, khi các điều kiện nêu ra là đúng thì nhận được giá trị 1, ngược lại
nhận giá trị 0.
minhcnh@gmail.com
44. Thứ tự ưu tiên của các toán tử
minhcnh@gmail.com
45. Phép toán chuyển đổi kiểu dữ liệu
(tênkiểu) Biểuthức
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;
minhcnh@gmail.com
46. Biểu thức dấu chấm hỏi
(điều kiện) ? <biểu thức 1> : <biểu thức 2> ;
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;
}
minhcnh@gmail.com
47. 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ự
minhcnh@gmail.com
48. 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);
minhcnh@gmail.com
49. 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);
minhcnh@gmail.com
50. 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ường
4. int isupper(int ch) Là chữ in hoa
5. 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.
minhcnh@gmail.com
52. 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 % 60
2. 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.
minhcnh@gmail.com
53. 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
minhcnh@gmail.com
54. 7. Nhập vào độ dài ba cạnh a, b, c của tam giác. Tính và in ra :
minhcnh@gmail.com
55. 7. Nhập vào độ dài ba cạnh a, b, c của tam giác. Tính và in ra :
minhcnh@gmail.com