Nội dung
2 Nhập môn lập trình - Cơ bản
Giới thiệu ngôn ngữ lập trình C
Trình biên dịch/thông dịch
Cấu trúc chương trình
Định dạng trong C
Biến, kiểu dữ liệu
Hằng số, từ khóa, toán tử
Thư viện
stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h
Nhập xuất căn bản
Nhập: scanf, cin, gets
Xuất: printf, cout, puts
53 trang |
Chia sẻ: phuongt97 | Lượt xem: 385 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Nhập môn lập trình - Chương 2: Các thành phần cơ bản - Ngô Hữu Dũng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nhập môn lập trình
Các thành phần cơ bản
TS. Ngô Hữu Dũng
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
Nội dung
Nhập môn lập trình - Cơ bản2
Giới thiệu ngôn ngữ lập trình C
Trình biên dịch/thông dịch
Cấu trúc chương trình
Định dạng trong C
Biến, kiểu dữ liệu
Hằng số, từ khóa, toán tử
Thư viện
stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h
Nhập xuất căn bản
Nhập: scanf, cin, gets
Xuất: printf, cout, puts
Ngôn ngữ lập trình C
Nhập môn lập trình - Cơ bản
Được phát triển bởi Dennis
Ritchie tại phòng thí nghiệm
AT&T Bell vào đầu thập niên
1970
C được dùng trong hệ điều
hành UNIX và phát triển cùng
với hệ điều hành này
C đã lan rộng ra nhiều hệ điều
hành khác và trở thành ngôn
ngữ phổ dụng nhất
3
Trình biên dịch/Trình thông dịch
Nhập môn lập trình - Cơ bản
Trình
biên dịch
Compiler
Mã nguồn
Source code
Mã máy
Machine
Code
Executable
Program
Input Output
Trình biên dịch: Phân tích chương
trình và biên dịch thành mã máy.
Trình
thông dịch
Interpreter
Source
Code
Input Output
Trình thông dịch: Phân tích và
thực thi chương trình cùng lúc.
4
Biên dịch và chạy chương trình
Nhập môn lập trình - Cơ bản
IDE – Integrated
Development Environment
Trình soạn thảo
Biên soạn mã nguồn
Trình biên dịch
Phân tích và biên dịch mã nguồn
thành mã đối tượng
Trình liên kết
Kết hợp các mã
đối tượng và thư
viện thành mã
thực thi
Editor
Compiler
Linker
Source code
file.c
Object code
file.obj
Executable code
file.exe
Libraries
IDE
(Integrated
Development
Environment)
5
Sửa lỗi - debug
Nhập môn lập trình - Cơ bản
Lỗi cú pháp
Phát hiện bởi trình biên
dịch
Lỗi về từ khóa, cú pháp,
ngữ pháp
Lỗi ngữ nghĩa
Được phát hiện bởi
người sử dụng
Lỗi về kết quả của
chương trình
Lỗi xuất hiện trong quá
trình thực thi chương
trình
Đúng cú pháp nhưng sai
kết quả
Editor
Compiler
Linker
Source code
file.c
Object code
file.obj
Executable code
file.exe
Libraries
Syntactic
Errors
Semantic Errors
6
Quiz
Nhập môn lập trình - Cơ bản7
Mục đích của việc “biên dịch” là chuyển đổi
A. Ngôn ngữ bậc thấp sang bậc cao
B. Chương trình thành mã nguồn
C. Mã nguồn sang mã máy
D. Mã máy sang mã nguồn
Trường hợp nào sau đây là “lỗi ngữ nghĩa”?
A. Lỗi khi biên dịch chương trình
B. Chương trình tính sai kết quả
C. Lỗi do gõ sai một câu lệnh
D. Lời chú thích không có nghĩa
Định dạng trong C
Nhập môn lập trình - Cơ bản
Có phân biệt giữa chữ in HOA và chữ in thường!
Các dòng trống, khoảng trắng, lời chú thích đều
được trình biên dịch bỏ qua
Các dấu thụt dòng giúp chương trình dễ đọc, rõ
ràng.
Có thể dùng tab hoặc dấu cách
Câu lệnh được kết thúc bằng dấu chấm phẩy ;
Chuỗi ký tự được đặt giữa hai dấu hai nháy
"Chuỗi"
Một ký tự được đặt giữa hai dấu một nháy 's'
8
Lời chú thích
Nhập môn lập trình - Cơ bản
Hai cách ghi chú thích
// chú thích dòng
/* chú thích
khối*/
Ví dụ
1. /* Chương trình C
2. ** In ra màn hình dòng chữ Hello 2017!*/
3. #include //Khai báo thư viện
9
Biến
Nhập môn lập trình - Cơ bản
Biến được dùng để lưu trữ dữ liệu và kết quả tính
toán
Kiểu dữ liệu: Nguyên, thực, ký tự, chuỗi, mảng, cấu
trúc, con trỏ
Tên biến: Do người lập trình tự đặt
Biến phải được khai báo trước khi sử dụng
Cú pháp: ;
int year;
float score;
char kyTu;
char name[50];
10
Biến (2)
Nhập môn lập trình - Cơ bản
Giá trị của biến có thể thay
đổi
Khởi tạo biến:
int year = 2016;
Phép gán:
year = last_year + 1;
Một vùng nhớ sẽ được cấp
phát tương ứng với kích cỡ
của biến
Mỗi ô nhớ có một địa chỉ
riêng
2016year
Biến Vùng nhớ
int year; // Khởi tạo
year = 2016;// Gán
Kiểu dữ
liệu?
11
Kiểu dữ liệu
Nhập môn lập trình - Cơ bản
int: Kiểu số nguyên
2 hoặc 4 bytes (16 hoặc 32 bits)
-32,768 → 32,767 hoặc -2,147,483,648 → 2,147,483,647
float: Kiểu số thực
4 bytes (32 bits): 1.2E-38 → 3.4E+38, độ chính xác 24 bits
double: Kiểu số thực có độ chính xác cao hơn float
8 bytes (64 bits): 2.3E-308 → 1.7E+308, độ chính xác 53 bits
char: Kiểu ký tự
1 byte, ví dụ: char exit = 'e';
char []: Kiểu chuỗi
ví dụ: char name[10] = "Quang";
bool: Kiểu luận lý, có giá trị true hoặc false
1 byte, ví dụ: bool kt = true; //C++
Độ chính
xác?
12
Số chấm động – floating-point numbers
Nhập môn lập trình - Cơ bản
Biểu diễn số thực
Ví dụ: 12’345 = 1.2345 x 104
Hay 1.2345E+4
Trị số x hệ cơ số số mũ
Float: Độ chính xác đơn
Double: Độ chính xác đôi
significand x base exponent
Kiểu dữ liệu Dấu Mũ Trị số Tổng số bit Độ chính xác
Float 1 bit 8 bits 23 bits 32 bits (4 bytes) 24 bits (Dấu + trị số)
Double 1 bit 11 bits 52 bits 64 bits (8 bytes) 53 bits (Dấu + trị số)
13
Tên biến
Nhập môn lập trình - Cơ bản
Phải bắt đầu bằng một chữ hoặc dấu gạch dưới (_), tiếp sau đó
có thể kết hợp giữa chữ, số và dấu gạch dưới.
Không được trùng với từ khóa có sẵn của C
Hai biến không được trùng tên nhau
Có phân biệt giữa chữ hoa và chữ thường
Độ dài tùy thích, tuy nhiên không nên đặt tên quá dài
Nên đặt tên có nghĩa, dễ hiểu
Keywords
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
14
Quiz – Tên biến
Nhập môn lập trình - Cơ bản
Những tên biến nào sau đây đúng hay sai?
1. 1ngoi_sao
2. bienDem1
3. phepNhân
4. donVi$
5. ngoi_nha
6. int
7. kiem-tra
8. A&T
9. ____dien___tich
10. +hai_so
11. luy thua
15
12. _mot_Ngoi_Sao
13. T_T
14. ^_^
15. edthbdl_mbcln2h
16. dienTich@
17. Chu-Vi-Hinh-Tron
18. mayViTinh
19. Tong+Hieu
20. 24gio
Quiz - khai báo biến
Nhập môn lập trình - Cơ bản16
Hãy khai báo các biến phù hợp cho các nội dung sau
1. Mã ID
2. Năm sinh
3. Họ và tên
4. Chiều cao
5. Cân nặng
6. Giới tính: Chỉ cần lưu giá trị ‘F’ (female) hoặc ‘M’ (male)
7. Tuổi
8. Đã lập gia đình? Chỉ cần lưu có (true) hoặc không (false)
9. Địa chỉ email
10. Nghề nghiệp
Quiz - khai báo biến (tham khảo)
Nhập môn lập trình - Cơ bản
1. #include // Khai báo thư viện
2. int main() // Chương trình chính
3. {
4. int ID; // ID kiểu số nguyên
5. char ID_s[20]; // Hoặc ID kiểu chuỗi
6. int namSinh; // Ví dụ: 1999
7. char hoVaTen[100]; // Tên kiểu chuỗi
8. float chieuCao; // Kiểu số thực
9. float canNang; // Kiểu số thực
10. char gioiTinh; // Kiểu ký tự: ‘F’, ‘M’
11. int tuoiTac; // Tuổi kiểu số nguyên
12. bool giaDinh; // Có: True, Chưa: False
13. char email[100]; // Email kiểu chuỗi
14. char ngheNghiep[50]; // Ví dụ: “Ky su CNTT”
15. //
16. return 0;
17.}
17
Chuyển đổi kiểu
Nhập môn lập trình - Cơ bản
Đặt (Kiểu dữ liệu) phía trước biểu thức để chuyển đổi kiểu dữ
liệu cho kết quả của biểu thức
f = (float) i1 / i2; i = (int)f;
Chia một số nguyên cho một số nguyên: Kết quả là số
nguyên
i1=5; i2=10; f=i1/i2; //Cảnh báo, f=0.00
f=(float)i1/i2; // OK, f=0.50
Chia một số thực cho một số nguyên hoặc chia một số
nguyên cho một số thực: Kết quả là số thực
i=5; f=10; i1 = i/f; // Cảnh báo, i1 = 0
f1=i/f; f2=i/10.0; // OK! f1=f2=0.50
18
Chuyển đổi kiểu (2)
Nhập môn lập trình - Cơ bản19
Gán một số nguyên vào một biến kiểu thực
f = i; // Cảnh báo việc chuyển đổi
f1 = 10; // OK! f1 = 10.000000
f2 = (float)i; // OK!
Gán một số thực vào một biến kiểu nguyên:
Mất phần thập phân (sau dấu chấm)
i1 = 9.5; i2 = f;//Cảnh báo, i1 = 9
i1 = (int)9.5; i2 = (int)f; // OK!
Quiz – Chuyển đổi kiểu dữ liệu
Nhập môn lập trình - Cơ bản20
Chuyển đổi kiểu dữ liệu phù hợp (nếu cần)
1. int a = 13 / 2;
2. float b = a / 4;
3. float c = 10 / a;
4. float d = 1 / 5;
5. float e = (3 / 5) * a;
6. float f = (7 + 3) / a;
7. float g = 5.4 * 3 / a;
8. float h = (a + 3) / 2;
9. float i = (5 / 9) * (a – 32);
10. float j = a / 2 + 10 / (2 * b);
Quiz – Chuyển đổi kiểu dữ liệu (1)
Nhập môn lập trình - Cơ bản21
Chuyển đổi kiểu dữ liệu phù hợp (nếu cần)
1. int a = 13 / 2;
2. float b = a / 4;
3. float c = 10 / a;
4. float d = 1 / 5;
5. float e = (3 / 5) * a;
6. float f = (7 + 3) / a;
7. float g = 5.4 * 3 / a;
8. float h = (a + 3) / 2;
9. float i = (5 / 9) * (a – 32);
10. float j = a / 2 + 10 / (2 * b);
1. int a = 13 / 2;
2. float b = (float)a / 4;
3. float c = 10.0 / a;
4. float d = 1.0 / 5;
5. float e = (3.0 / 5) * a;
6. float f = (float)(7 + 3) / a;
7. float g = 5.4 * 3 / a;
8. float h = (a + 3) / 2.0;
9. float i = (5 / 9.0) * (a – 32);
10. float j = a / 2.0 + 10 / (2 * b);
Hằng số trong C
Nhập môn lập trình - Cơ bản
Giá trị không đổi
suốt chương trình
Hằng số có kiểu
dữ liệu
Số nguyên
Số thực
Ký tự
Chuỗi
Khai báo hằng số
#define
const
#define a 45 // int
#define b 125u // unsigned int
#define c 87l // long int
#define d 23ul // unsigned long int
#define e 057 // Cơ số 8
#define f 0xfee // Cơ số 16
#define g 3.14159 // float
#define h 314159E-5 // float
#define i 'a' // char
#define j "morning" // string
const int k = 2016;
const float l = 2.016;
const char m = '4';
const char n[] = "afternoon";
#define o 048 /* ERROR! Hệ cơ số 8
không có số 8 */
#define p 59E // ERROR!
#define q .E59 // ERROR!
22
Toán tử
Nhập môn lập trình - Cơ bản23
Gán
assignment
Tăng / Giảm
increment
decrement
Toán học
arithmetic
Luận lý
logical
So sánh
comparison
member
access
a = b
a += b
a -= b
a *= b
a /= b
a %= b
a &= b
a |= b
a ^= b
a <<= b
a >>= b
++a
--a
a++
a--
+a
-a
a + b
a - b
a * b
a / b
a % b
~a
a & b
a | b
a ^ b
a << b
a >> b
!a
a && b
a || b
a == b
a != b
a < b
a > b
a <= b
a >= b
a[b]
*a
&a
a->b
a.b
Toán tử gán - assignment
Nhập môn lập trình - Cơ bản
Cho a = 7, b = 2. Số trên bit: a = 00000111, b = 00000010
Toán tử Mô tả Kết quả
a = b Gán giá trị của b cho biến a a = 2
a += b Phép cộng: a = a + b a = 7 + 2 = 9
a -= b Phép trừ: a = a – b a = 7 – 2 = 5
a *= b Phép nhân: a = a * b a = 7 * 2 = 14
a /= b Phép chia lấy nguyên: a = a / b a = 7 / 2 = 3
a %= b Phép chia lấy dư: a = a % b a = 7 % 2 = 1
a &= b Phép AND trên bit: a = a & b a = 0111&0010 = 2
a |= b Phép OR trên bit: a = a | b a = 0111|0010 = 7
a ^= b Phép XOR trên bit: a = a ^ b a = 0111^0010 = 5
a <<= b Phép dịch trái trên bit: a = a << b a = a<<2 =11100=28
a >>= b Phép dịch phải trên bit: a = a >> b a = a>>2 =0001 = 1
24
Toán tử toán học - arithmetic
Nhập môn lập trình - Cơ bản
Cho a = 7, b = 2. Số trên bit: a = 00000111, b = 00000010
c = -a Trừ a c = -7
c = a + b Phép cộng c = 7 + 2 = 9
c = a - b Phép trừ c = 7 – 2 = 5
c = a * b Phép nhân c = 7 * 2 = 14
c = a / b Phép chia lấy nguyên c = 7 / 2 = 3
c = a % b Phép chia lấy dư c = 7 % 2 = 1
c = ~a Phép NOT trên bit c = 11111000 = –8
c = a & b Phép AND trên bit c = 0111&0010 = 2
c = a | b Phép OR trên bit c = 0111|0010 = 7
c = a ^ b Phép XOR trên bit c = 0111^0010 = 5
c = a << b Phép SHIFT LEFT trên bit c = a<<2 =11100=28
c = a >> b Phép SHIFT RIGHT trên bit c = a>>2 =0001 = 1
25
Toán tử trên bit – bitwise operations
Nhập môn lập trình - Cơ bản
Các phép toán trên bit
A 0 0 1 1
B 0 1 0 1
A & B 0 0 0 1
A | B 0 1 1 1
A ^ B 0 1 1 0
~A 1 1 0 0
~B 1 0 1 0
<< Cho a = 00110100, a<<2= 11010000
>> Cho a = 00110100, a>>2= 00001101
#include
int main()
{
int a = 52; // 0011 0100
int b = 29; // 0001 1101
int c;
c = a & b; // 0001 0100
printf("%d & %d = %d\n", a, b, c);
c = a | b; // 0011 1101
printf("%d | %d = %d\n", a, b, c);
c = a ^ b; // 0010 1001
printf("%d ^ %d = %d\n", a, b, c);
c = ~a; // 1100 1011
printf("~%d = %d\n", a, c);
c = a << 2; // 1101 0000
printf("%d << 2 = %d\n", a, c);
c = a >> 2; // 0000 1101
printf("%d >> 2 = %d\n", a, c);
return 0;
}
26
Toán tử tăng / giảm - increment / decrement
Nhập môn lập trình - Cơ bản
Cho a = 7, b = 2
Phép toán Mô tả Kết quả
b = ++a
Cộng a lên một đơn vị trước khi tính
Tương đương: a = a + 1; b = a;
a = 8
b = 8
b = --a
Trừ a đi một đơn vị trước khi tính
Tương đương: a = a – 1; b = a;
a = 6
b = 6
b = a++
Cộng a lên một đơn vị sau khi tính
Tương đương: b = a; a = a + 1;
a = 8
b = 7
b = a--
Trừ a đi một đơn vị sau khi tính
Tương đương: b = a; a = a - 1;
a = 6
b = 7
Ví dụ:
c = ++a - b--
Tương đương:
a = a + 1; c = a – b; b = b – 1;
a = 8
b = 6
c = 1
27
Độ ưu tiên
Nhập môn lập trình - Cơ bản
Category Toán tử
Postfix () [] -> . ++ --
Unary + - ! ~ ++ - - (type)* & sizeof
Multiplicative * / %
Additive + -
Shift >
Relational >=
Equality == !=
Bitwise AND &
Bitwise XOR ^
Bitwise OR |
Logical AND &&
Logical OR ||
Conditional ?:
Assignment = += -= *= /= %=>>= <<= &= ^= |=
Comma ,
28
Quiz – Phép toán
Nhập môn lập trình - Cơ bản29
Hãy cho biết kết quả của các phép toán sau
int main()
{
int a = 7, b = 2, c, d, e, f, g, h, i, j, k;
b += 2;
c = ++a;
d = a--;
e = a/2;
f = a%2;
g = a++ - 7%3;
h = 11%3 + ++a;
i = (a / 3) % 4;
j = --a % 2;
k = a/4*3 ;
return 0;
}
Quiz – Phép toán (1)
Nhập môn lập trình - Cơ bản30
Hãy cho biết kết quả của các phép toán sau
int main()
{
int a = 7, b = 2, c, d, e, f, g, h, i, j, k;
b += 2; // b = b + 2 = 4
c = ++a; // ++a = 8, c = a = 8
d = a--; // d = a = 8, a-- = 7
e = a/2; // e = 7 / 2 = 3
f = a%2; // f = 7 % 2 = 1
g = a++ - 7%3; // 7%3 = 1, g = a – 1 = 6, a++ = 8
h = 11%3 + ++a; // ++a = 9, 11%3 = 2, h = 2 + 9 = 11
i = (a / 3) % 4; // a / 3 = 3, i = 3 % 4 = 3
j = --a % 2; // --a = 8, j = 8 % 2 = 0
k = a/4*3 ; // a/4 = 2, k = 2 * 3 = 6
return 0;
}
Toán tử luận lý – logical
Nhập môn lập trình - Cơ bản
Những phép toán luận lý
Cho A = True, B = False
Toán tử Mô tả Ví dụ
&&
Toán tử AND, nếu và chỉ nếu cả hai
toán hạng điều đúng thì kết quả phép
toán là đúng
A && B: False
||
Toán tử OR, nếu và chỉ nếu cả hai toán
hạng đều sai thì kết quả phép toán là
sai
A || B: True
! Toán tử NOT, thực hiện phép phủ định
!A: False
!B: True
!A || B: False
A && !B: True
31
Toán tử so sánh – comparison
Nhập môn lập trình - Cơ bản
Những phép so sánh
Cho A = 10, B = 20
Toán tử Mô tả Ví dụ
== Bằng nhau (A == B) sai
!= Khác nhau (A != B) đúng
> Lớn hơn (A > B) sai
< Nhở hơn (A < B) đúng
>=
Lớn hơn
hoặc bằng
(A >= B) sai
<=
Nhở hơn
hoặc bằng
(A <= B) đúng
#include
int main()
{
int A=10, B=20;
if (A==B) printf("A = B");
if (A!=B) printf("A ≠ B");
if (A>B) printf("A > B");
if (A<B) printf("A < B");
if (A>=B) printf("A ≥ B");
if (A<=B) printf("A ≤ B");
return 0;
}
32
Các thư viện
Nhập môn lập trình - Cơ bản
Các thư viện định nghĩa sẵn các hàm hay kiểu dữ liệu
Cú pháp khai báo: #include
các hàm nhập xuất chuẩn, các thao tác với tập
tin
getchar, putchar, printf, scanf, gets, fopen, fclose, remove,
các hàm chuyển đổi kiểu dữ liệu, cấp phát bộ
nhớ
atof, atoi, atol, strtol, free, malloc, abs, rand, srand
các hàm về toán học
sqrt, pow, ceil, floor, trunc, abs, sin, cos
33
Các thư viện (2)
Nhập môn lập trình - Cơ bản34
các hàm xử lý chuỗi ký tự
strcpy, strcat, strlen, strstr, strcmp, strchr, memset
các hàm xử lý ký tự
toupper, tolower
các hàm nhập xuất
gets, puts, cin, cout
các hàm xử lý về thời gian
time, clock, localtime, difftime, time_t, struct tm
Hàm thường dùng ở thư viện stdio.h
Nhập môn lập trình - Cơ bản35
Khai báo: #include
Hàm printf: Xuất ra màn hình
Nguyên mẫu hàm: int printf(const char * format, ... );
printf(“Hello world!”);
printf(“a = %d.\n”, so_nguyen);
Hàm scanf: Nhập dữ liệu từ bàn phím
Nguyên mẫu hàm: int scanf( const char * format, ... );
scanf("%d", &so_nguyen);
scanf("%f", &so_thuc);
scanf("%c", &ky_tu);
Hàm gets: Nhập chuỗi từ bàn phím
char name[50]; gets(name);
Hàm thường dùng ở thư viện stdlib.h
Nhập môn lập trình - Cơ bản36
Khai báo: #include
Hàm rand: Tạo số nguyên ngẫu nhiên
Nguyên mẫu hàm: int rand (void);
a = rand(); // a có giá trị từ 0 đến 32767
b = rand()%90; // b có giá trị từ 0 đến 89
c = rand()%90 + 10; // c có giá trị từ 10 đến 99
Hàm srand: Khởi tạo số ngẫu nhiên
Nguyên mẫu hàm: void srand (unsigned int seed);
Ví dụ:
srand(time(NULL));
d = rand() % 101 – 50;
Hàm thường dùng ở thư viện math.h
Nhập môn lập trình - Cơ bản37
Khai báo: #include
Hàm sqrt: Tính căn bậc hai
Nguyên mẫu hàm: double sqrt (double x);
x = sqrt(9); // Căn bậc hai của 9
y = sqrt(x + 1); // Căn bậc hai của x + 1
Hàm pow: Tính lũy thừa
Nguyên mẫu hàm: double pow (double base, double exponent);
x = pow(3, 2); // ba mũ hai
y = pow(x, 4); // x mũ bốn
Hàm floor, ceil: Làm tròn
z = floor(4.3); // z = 4.0
w = ceil(4.3); // w = 5.0
Hàm thường dùng ở thư viện string.h
Nhập môn lập trình - Cơ bản38
Khai báo: #include
Hàm strlen: Tính chiều dài của chuỗi
Nguyên mẫu hàm: size_t strlen(const char * str)
a = strlen(“hello”); // a = 5
Hàm strcpy: Sao chép chuỗi
Nguyên mẫu hàm: char * strcpy(char * dest, const char * src)
char hello[50]; // Khai báo chuỗi
strcpy(hello, “Hello ”); // hello = “Hello ”
Hàm strcat: Nối chuỗi
Nguyên mẫu hàm: char * strcat( char * dest, const char * src)
char name[50] = “Tuan”;
strcat(hello, name); // hello = “Hello Tuan!”
Hàm strcmp: So sánh chuỗi
Nguyên mẫu hàm: int strcmp( const char * str1, const char * str2 )
a = strcmp(name, “Tuan”); // a = 0
Hàm thường dùng ở thư viện ctype.h
Nhập môn lập trình - Cơ bản39
Khai báo: #include
Hàm tolower: Chuyển ký tự sang chữ thường
Nguyên mẫu int tolower ( int c );
char c = ‘N’; tolower(c); // c = ‘n’
Hàm toupper: Chuyển ký tự sang chữ in
Nguyên mẫu int toupper ( int c );
char c = ‘n’; toupper(c); // c = ‘N’
Các hàm kiểm tra ký tự
isalnum(c): Trả về true (khác 0) nếu c là số hoặc chữ
isalpha(c): Trả về true nếu c là chữ
islower(c): Trả về true nếu c là chữ thường
isupper(c): Trả về true nếu c là chữ in
Quiz – Tính toán
Nhập môn lập trình - Cơ bản40
Cho một biến số nguyên x, viết biểu thức tính:
a =
( )
b =
( )
c =
( 3)( + 1)
d = + 2
e =
+
= ( + 2)
( 2)
g =
+ ( + 1)
Quiz – Tính toán (tham khảo)
Nhập môn lập trình - Cơ bản41
Cho một biến số nguyên x, viết biểu thức tính:
a =
( )
a = (x+1)/2.0;
b =
( )
b = 4*(x+2)/3.0;
c =
( 3)( + 1) c = (1/3.0)*(x-3)*(x+1);
d = + 2 d = sqrt(pow(x,2)+2);
e =
+
e = sqrt((x+4)/4.0 + (x-3)/2.0);
= ( + 2)
( 2) f = (x+2)*sqrt((5/3.0)*(pow(x,4)-2));
g =
( + 2) g = (x+1)/3.0*sqrt(pow(x+2,4));
Nhập dữ liệu
Nhập môn lập trình - Cơ bản42
Chú ý nhập đúng kiểu dữ liệu
Nhập số nguyên
int a; scanf(“%d”, &a);
Nhập số thực
float b; scanf(“%f”, &b);
Nhập ký tự
char c; scanf(“%c”, &c);
Nhập chuỗi ký tự
char s[50];
fflush(stdin); // xoá bộ đệm đầu vào
gets(s);
scanf(“%s”, &s); // ký tự trắng
scanf(“%[^\n]s”, &s); // enter
#include
int main()
{
int a;
float b;
char c;
char s[50];
scanf("%d", &a);
scanf("%f", &b);
scanf("%c", &c);
fflush(stdin);
gets(s);
. . .
return 0;
}
Xuất dữ liệu
Nhập môn lập trình - Cơ bản43
Chú ý xuất đúng kiểu
dữ liệu
Xuất số nguyên
printf(“%d”, a);
Xuất số thực
printf(“%f”, b);
Xuất ký tự
printf(“%c”, c);
Xuất chuỗi ký tự
printf(“%s”, s);
1. #include
2. int main()
3. {
4. int a; float b;
5. char c; char s[50];
6. scanf("%d", &a);
7. scanf("%f", &b);
8. scanf("%c", &c);
9. fflush(stdin);
10. gets(s);
11. printf("a = %d\n", a);
12. printf("b = %f\n", b);
13. printf("c = %c\n", c);
14. printf("s = %s\n", s);
15. return 0;
16. }
Định dạng biểu diễn dữ liệu
Nhập môn lập trình - Cơ bản
specifier Kết quả Ví dụ
%d, %i Số nguyên có dấu -95, 23
%u Số nguyên không dấu 7235
%o Số bát phân không dấu 610
%x, %X Số thập lục phân không dấu 7fa, 7FA
%f, %F Số thực 392.65
%e, %E Ký hiệu khoa học 3.92e+2, 3.92E+2
%c Ký tự a
%s Chuỗi ký tự laptrinh
%p Địa chỉ con trỏ b8000000
%% In dấu % %
%a, %A Số thập lục phân kiểu thực 0xb.f3p-2, 0XB.F3P-2
%g, %G Dạng ngắn của %e, %E hoặc %f,%F 392.65
44
%[flags][width][.precision][length]specifier
Định dạng biểu diễn dữ liệu
Nhập môn lập trình - Cơ bản
%[flags][width][.precision][length]specifier
flags Mô tả
– Canh trái trong width
+ Buộc in dấu + hoặc –
(space) Ký tự trống trước dữ liệu
0 In số 0 trước dữ liệu
width Số ký tự tối thiểu được in ra
.precision Số ký tự sau dấu chấm động
length d i u o x
(none) int unsigned int
hh signed char unsigned char
h short int unsigned short int
l long int unsigned long int
45
Minh hoạ biểu diễn dữ liệu
Nhập môn lập trình - Cơ bản
1. #include
2. int main()
3. {
4. printf("Char: %c %c \n", 'a', 65);//Char: a A
5. printf("Integer: %d \n", 1999); //Integer: 1999
6. printf("Space: %7d \n", 1999); //Space: 1999
7. printf("Zero: %07d \n", 1999); //Zero: 0001999
8. printf("Float: %.2f\n", 3.1416); //Float: 3.14
9. printf("Float: %6.2f\n", 3.1416); //Float: 3.14
10. printf("String: %s\n", "Chuoi"); //String: Chuoi
11. printf("Hexa: %x\n", 100); //Hexa: 64
12. printf("Octo: %o\n", 100); //Octo: 144
13. printf("Hexa: %#x\n", 100); //Hexa: 0x64
14. printf("Octo: %#o\n", 100); //Octo: 0144
15. return 0;
16.}
46
Mã escape
Nhập môn lập trình - Cơ bản
Escape
code
Description
\n newline
\r carriage return
\t tab
\v vertical tab
\b backspace
\f form feed (page feed)
\a alert (beep)
\' single quote (')
\" double quote (")
\? question mark (?)
\\ backslash (\)
Mã escape dùng để đại diện
cho những ký tự đặc biệt hoặc
những chuỗi, thao tác khó
trình bày trực tiếp
Mã escape được đặt trong
chuỗi định dạng của lệnh
printf
Ví dụ: printf(“A\tB\n”);
47
Kết thúc Bài 2
Nhập môn lập trình - Cơ bản
Giới thiệu ngôn ngữ lập trình C
Trình biên dịch/thông dịch
Cấu trúc chương trình
Định dạng trong C
Biến, kiểu dữ liệu
Hằng số, từ khóa, toán tử
Thư viện
stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h
Nhập xuất căn bản
Nhập: scanf, cin, gets
Xuất: printf, cout, puts
48
Bài tập 2.1: Biến và kiểu biến
Nhập môn lập trình - Cơ bản49
Viết chương trình nhập vào từ bàn phím và xuất ra màn
hình các thông tin sau
1. Mã ID
2. Năm sinh
3. Họ và tên
4. Chiều cao
5. Cân nặng
6. Giới tính: Chỉ cần lưu giá trị ‘F’ (female) hoặc ‘M’ (male)
7. Tuổi
8. Đã lập gia đình? Chỉ cần lưu có (true) hoặc không (false)
9. Địa chỉ email
10. Nghề nghiệp
Bài tập 2.2: Nhập, tính toán, xuất
Nhập môn lập trình - Cơ bản50
Viết chương trình nhập vào một số nguyên x, tính toán và
xuất ra màn hình giá trị các biểu thức sau:
a =
( )
b =
( )
c =
( 3)( + 1)
d = + 2
e =
+
= ( + 2)
( 2)
g =
+ ( + 1)
Bài tập 2.3: Chữ số
Nhập môn lập trình - Cơ bản51
Viết chương trình tạo ra một số nguyên ngẫu nhiên gồm 3
chữ số, hãy xác định các chữ số hàng đơn vị, hàng chục và
hàng trăm của số nguyên ấy.
Ví dụ: Nhập vào 365
Xuất ra: 3 tram, 6 chuc, 5 don vi.
Gợi ý:
Số hàng đơn vị: a % 10
Số hàng chục: (a % 100) / 10
Số hàng trăm: (a % 1000) / 100
Số hàng ngàn: (a % 10000) / 1000
Số hàng chục ngàn: (a % 100000) / 10000
Số hàng trăm ngàn: (a % 1000000) / 100000
Bài tập 2.4: Thời gian
Nhập môn lập trình - Cơ bản52
Viết chương trình nhập vào tổng số giây, quy đổi và xuất
ra màn hình ngày, giờ, phút, giây tương ứng.
Ví dụ:
Nhập vào tổng số giây là 90061
Xuất ra: 1 ngày, 1 giờ, 1 phút, 1 giây
Gợi ý:
Tương tự bài 2.3
Bài tập 2.5 – Số ngẫu nhiên
Nhập môn lập trình - Cơ bản53
Viết chương trình xuất ra màn hình các số ngẫu nhiên sau
a có giá trị trong khoảng từ 0 đến 89
b có giá trị trong khoảng từ 10 đến 99
c có giá trị trong khoảng từ -30 đến 30
d có giá trị giữa a và b bất kỳ nhập từ bàn phím
Gợi ý:
rand()%10 tạo ra số có giá trị từ 0 đến 9
Các file đính kèm theo tài liệu này:
- bai_giang_nhap_mon_lap_trinh_chuong_2_cac_thanh_phan_co_ban.pdf