Chương 1 của bài giảng Phương pháp lập trình cung cấp cho người học những nội dung sau: Hệ thống số, các quy tắc chuyển đổi; các khái niệm cơ bản; các thành phần cơ bản trong ngôn ngữ C++; các kiểu dữ liệu trong C++; biến, hằng, cách khai báo; lệnh xuất nhập; định dạng kết quả xuất; các toán tử. Mời tham khảo.
Trang 1MÔN HỌC PHƯƠNG PHÁPLẬP TRÌNH
MÔN HỌC PHƯƠNG PHÁPLẬP TRÌNH
MÔN HỌC PHƯƠNG PHÁPLẬP TRÌNH
• Nội dung
• Một số thuật ngữ liên quan đến máy tính và lập trình.
• Sơ lược về ngôn ngữ lập trình
• Ngôn ngữ minh họa Pseudo code và C/C++
• Các giải thuật cơ bản
• Kỹ năng tư duy và thực hành trên ngôn ngữ cụ thể
3
Phương thức
• Phương thức học
• Giờ lý thuyết: giảng và báo cáo
• Giờ thực hành tại phòng máy
• Kiểm tra và thi
• Kiểm tra thực hành: kỹ năng lập trình
• Thi lý thuyết : trắc nghiệm khách quan
• Tài liệu tham khảo
• Slide bài giảng Lập Trình Căn Bản
• Giáo trình Phương Pháp Lập trình – Khoa CNTT
• Tài liệu khác
CHƯƠNG 1: NHẬP MÔN VỀ MÁY TÍNH VÀ LẬP TRÌNH
Trang 25 5
NỘI DUNG
1 Hệ thống số, các quy tắc chuyển đổi
2 Các khái niệm cơ bản
3 Các thành phần cơ bản trong ngôn ngữ C++
4 Các kiểu dữ liệu trong C++
5 Biến, hằng, cách khai báo
(digits) hữu hạn Tổng số ký số của mỗi hệ đếm
gọi là cơ số (base hay radix), ký hiệu là b
Trang 4Đổi một số nguyên từ hệ thập phân
sang hệ b
• Lấy số nguyên thập phân N(10) lần lượt chia
cho b cho đến khi thương số bằng 0
• Kết quả số chuyển đổi N(b) là các dư số
trong phép chia viết ra theo thứ tự ngược lại
14
Chuyển thập phân(10) -> nhị phân(2)
• Ví dụ 1:
• Số 12 (10)= ?(2) Dùng phép chia cho 2 liên tiếp, ta có một loạt các
số dư như sau:
Trang 6Chuyển số nhị phân sang hệ 16
SỐ THẬP PHÂN CƠ SỐ 16 NHỊ PHÂN 4 BIT
23 23
Lập trình
• Lập trình máy tính (programming) gọi tắt là lập
trìnhlà kỹ thuật cài đặt một hoặc nhiều thuật toán
trừu tượng có liên quan với nhau bằng một hoặc
nhiều ngôn ngữ lập trìnhđể tạo ra một chương
trình máy tính
24 24
Thuật toán ( giải thuật)
• Thuật toán là một bộ các quy tắc hay quytrình cụ thể nhằm giải quyết một vấn đềtrong một số bước hữu hạn
Trang 725 25
Sử dụng lưu đồ (Flowchart):
27 27
Các Ví Dụ
28 28
Trang 829 29
Ngôn ngữ lập trình
(programming language):
• Là một tập con của ngôn ngữ máy tính, là
một hệ thống được ký hiệu hóa để miêu tả
những tính toán (qua máy tính) trong một
dạng mà cả con người và máy đều có thể đọc
và hiểu được
• Một tập hợp các chỉ thị được biểu thị nhờ
ngôn ngữ lập trình để thực hiện các thao tác
máy tính nào đó thông qua một chương
trình
30 30
Ngôn ngữ lập trình
(programming language):
• Ngôn ngữ lập trình có thể phân theo 2 cách:
• Ngôn ngữ cấp cao – ngôn ngữ cấp thấp
• Ngôn ngữ hướng thủ tục – ngôn ngữ hướng đối tượng
• Ngôn ngữ c++ là ngôn ngữ bậc cao có chứa các đặc trưng của cả 2 loại ngôn ngữ: hướng thủ tục
và hướng đối tượng
31 31
Cấu trúc của một chương trình C++
• Một chương trình gồm nhiều đoạn được sắp xếp theo một trình tự logic, mỗi đọan thực hiện một chức năng trong chương trình gọi là modules
• Trong C++ modules có thể là lớp hoặc hàm
• Mỗi hàm có một tên riêng
• Các lệnh của 1 hàm phải đặt trong { }
• Mỗi lệnh được kết thúc bằng dấu ;
Trang 933 33
Cấu trúc của một chương trình C++
• Những khai báo, những chỉ thị tiền xử lý
Hàm main()
• Mỗi chương trình trong C++ phải có duy nhất một hàm main(), dùng để điều khiển chương trình
• Cấu trúc của hàm main
<data type> main() {
program statement;
return value;
}
35 35
Ví dụ: chương trình C++ đơn giản
Các tập tin thư viện thông dụng
Đây là các tập tin chứa định nghĩa các hàm thông dụng khi lập trình C/C++.
Muốn sử dụng các hàm trong các tập tin header này thì phải khai báo #include
<FileName.h> ở phần đầu của chương trình, với FileName.h là tên tập tin thư viện.
Trang 10Các tập tin thư viện thông dụng
Các tập tin thư viện thông dụng gồm:
•Stdio.h(C), iostream.h(C++): định nghĩa
các hàm vào ra chuẩn như các hàm xuất dữ
liệu (printf())/cout), nhập giá trị cho biến
(scanf())/cin), nhận ký tự từ bàn phím
(getc()), in ký tự ra màn hình (putc()), nhập
một chuỗi ký tự từ bàm phím (gets()), xuất
chuỗi ký tự ra màn hình (puts())
•Conio.h: định nghĩa các hàm vào ra trong
chế độ DOS, như clrscr(), getch(), …
38
Các tập tin thư viện thông dụng
• math.h: Định nghĩa các hàm toán học như:
abs(), sqrt(), log(), log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(), …
• alloc.h: định nghĩa các hàm vào ra cấp thấp
gồm các hàm open(), _open(), read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(), lock(), …
39 39
CÁC THÀNH PHẦN CƠ BẢN TRONG
40 40
Trang 1141 41
Tên(định danh identifier)
• Tên ( định danh ) : là 1 dãy kí tự bắt đầu bằng
chữ hoặc ký tự gạch dưới, theo sau là chữ cái,
chữ số hoặc ký tự gạch nối underscore (_)
• Tên : dùng làm tên hằng, tên biến, nhãn, tên
hàm
Ví dụ:
- Tên đúng : _abc, Delta_1, BETA.
- Tên sai : 1xyz ( vì bắt đầu là 1 chữ số )
A#B ( vì có dâu #)
X-1 (vì sử dụng dấu gạch ngang)
42 42
Tên(định danh identifier)
• Chú ý :
• + Tên : chữ hoa và chữ thường được xem là khác nhau
+ Thông thường : Ðặt chữ hoa cho các hằng, chữ thường cho các đại lượng còn lại (biến, hàm )
Nên đặt 1 cách gợi nhớ ( 8 kí tự đầu là
có nghĩa và tuỳ thuộc chương trình )
43 43
Từ khóa (keyword)
• Một số từ được giữ bởi C++ cho một số mục đích riêng và không thể được dùng cho các định danh gọi là từ khóa
Trang 1245 45
Từ khóa (keyword)
auto default for operator sizeof typedef
break delete friend private static union
char else inline register template void
46 46
Trang 1349 49
Kiểu số nguyên
char Character or small integer. 1byte signed: -128 to 127unsigned: 0 to 255
short int
(short) Short Integer. 2bytes
signed: -32768 to 32767 unsigned: 0 to 65535
int Integer 4bytes
signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
long int
(long) Long integer. 4bytes
signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
50 50
Kiểu số thực
float Floating point number 4bytes 3.4e +/- 38
(7 digits) double Double precision
floating point number. 8bytes
1.7e +/- 308 (15 digits) long
double
Long double precision floating point number. 10bytes
1.2e +/- 4932 (19 digits)
51 51
Kiểu bool
bool Boolean value It can take one of
two values: true or false. 1byte
true or false
52 52BIẾN-HẰNG – CÁCH KHAI BÁO
Trang 1453 53
BIẾN-CÁCH KHAI BÁO BIẾN
Biến đại lượng thay đổi, mỗi biến có 1 tên và
địa chỉ vùng nhờ danh riêng cho nó
• CÁCH KHAI BÁO BIẾN:
< Kiểu dữ liệu > < Danh sách các biến >;
Ví dụ:
int a;
float mynumber;
54 54
BIẾN-CÁCH KHAI BÁO BIẾN
• Nếu các biến có cùng kiểu dữ liệu thì có thể khai báo:
<kiểu dữ liệu><danh sách các biến cách nhau bởi dấu phẩy>;
Ví dụ:
int a, b, c;
55 55
BIẾN-CÁCH KHAI BÁO BIẾN
• PHẠM VI CỦA BIẾN
56 56
BIẾN-CÁCH KHAI BÁO BIẾN
• KHỞI TẠO GIÁ TRỊ CHO BIẾNtype identifier = initial_value ;
Ví dụ:
int a = 0;
type identifier
initial_value
Trang 1557 57
• int a=5; // initial value = 5
• int b(2); // initial value = 2
• int result; // initial value undetermined(chua XD)
HẰNG – CÁCH KHAI BÁO HẰNG
HẰNG (Constants): Là một đại lượng mà
giá trị của nó không đổi
59 59
Hằng nguyên ( Int )
Có giá trị từ -32768 đến 32767
Khi viết theo hệ 16 bằng cách thêm tiền tố Ox
Hoặc theo cơ số 8 bằng cách thêm tiền tố O
Trang 1661 61
Hằng ký tự
•Viết trong 2 dấu nháy kép Giá trị của hằng chính là mã ASCII của chữ
•Ví dụ: 'A' = 65;
'd' = 100,'9 ' - '0 ' = 57 - 48 = 9
63 63
{double r=5.0; // radius
Trang 1765 65
Khai báo hằng (const)
Cú pháp:const <kiểu dữ liệu> tên hằng = giá trị
Ví dụ:
constint pathwidth = 100;
constchar tabulator = '\t';
67 67
CÁC LỆNH XUẤT NHẬP CHUẨN
68 68
Lệnh xuất chuẩn (cout)
• Cú pháp:
cout<<biểu thức;
Trong đó :Biểu thức có thể là:
–Biến
–Hằng
–Chuổi
Trang 1869 69
Lệnh xuất chuẩn (cout)
• Ví dụ:
cout << "This is a sentence.";
cout << "This is another sentence.";
cout << "Second sentence.\nThird sentence.";
70 70
Định dạng kết quả xuất
• setw(n): ấn định độ rộng để in một số là n
• setprecision(n): ấn định số chữ số thập phân sẽ
hiển thị
• dec: hiển thị giá trị số ở hệ thập phân
• hec: hiển thị giá trị số ở hệ thập lục phân
• oct : hiển thị giá trị số ở hệ bát phân
72 72
Định dạng kết quả xuất
• Lưu ý: muốn sử dụng các định dạng thì trong chương trình ta phải khai báo :
#include <iomanip.h>
Trang 1973 73
cout <<hex <<15 // kết quả f
• cout <<oct <<10; // kết quả 12
• cout <<dec <<0x10; // kết quả 16
7 Toán tử điều kiện
8 Toán tử lấy kích thước
9 Chuyển đổi kiểu dữ liệu
a=5// gán giá trị nguyên 5 cho biến a
Vế trái của phép gán bắt buộc phải là một
biến, vế phải có thể là hằng, biến hay kết
quả của một biểu thức
76
TOÁN TỬ GÁN(=)
Toán tử gán luôn được thực hiện từ trái sang phải
Ví dụ: a = b; //gán giá trị của biến a bằng giá trị đang chứa trong biến b
Cho phép vế phải có thể chứa các phép gán khác
Ví dụ: a = 2 + (b = 5); tương đương
với
b = 5;
a = 2 + b;
Trang 20quả sẽ là một số nguyên.
kết quả sẽ là một số thực (real hay double)
Trang 21TOÁN TỬ TĂNG - GIẢM
• Toán tử tăng (++) và toán tử giảm ( ) có tác
dụng làm tăng hoặc giảm 1 giá trị lưu trong
biến Chúng tương đương với +=1 hoặc -=1
Vì vậy, các dòng sau là tương đương:
TOÁN TỬ TĂNG - GIẢM
• Trường hợp toán tử được sử dụng như là
một tiền tố ++a: giá trị của a tăng trước khi
biểu thức được tínhvà giá trị đã tăng được
sử dụng trong biểu thức
• Trong trường hợp toán tử được sử dụng như
là một hậu tố a++ :giá trị trong biến a được
tăng sau khi đã tính toán
Trang 22'A' < 'F' // kết quả là 1 (tương đương với 65 < 70)
Ngược lại, nếu E1 sai, E3 được ước lượng và trở thành giá trị của biểu thức
E1 ? E2 : E3
Trang 23TOÁN TỬ ĐIỀU KIỆN
• Phép toán điều kiện cũng là một biểu thức nên
nó có thể được sử dụng như một toán hạng của phép toán điều kiện khác
TOÁN TỬ LẤY KÍCH THƯỚC
• sizeof(data_Type): để tính kích thước của bất kỳ hạng mục dữ liệu hay kiểu dữ liệu nào
• Kết quả trả về là kích thước của kiểu dữ liệu đã chỉ định theo byte
• Ví dụ:
cout << "char size = " << sizeof(char) << " bytes\n";
Trang 24& Và bit '\011' & '\027‘ // được '\001'
| Hoặc bit '\011' | '\027‘ // được '\037'
^ Hoặc exclusive bit '\011' ^ '\027‘ // được '\036'
<< Dịch trái bit '\011' << 2 // được '\044'
>> Dịch phải bit '\011' >> 2 // được '\002'
CHUYỂN ĐỔI KIỂU DỮ LIỆU
• Phép chuyển đổi kiểu cho phép chuyển đổi dữ liệu từ kiểu này sang kiểu khác
• Cách cơ bản nhất được thừa kế từ ngôn ngữ C là :
(Kiểu dữ liệu)<biểu thức>
Ví dụ:
Trang 25CHUYỂN ĐỔI KIỂU DỮ LIỆU
• (int) 3.14 // chuyển 3.14 sang int để được 3
• (long) 3.14 // chuyển 3.14 sang long để được 3L
• (double) 2 // chuyển 2 sang double để được 2.0
• (char) 122 // chuyển 122 sang char có mã là 122
• (unsigned short) 3.14 // được 3 như là một
unsigned short