Microsoft PowerPoint BaigiangkythuatlaptrinhC ppt 1 1 KỸ THUẬT LẬP TRÌNH CƠ BẢN CHƯƠNG 1 TỔNG QUAN VỀ KỸ THUẬT LẬP TRÌNH CHƯƠNG 2 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C CHƯƠNG 3 CẤU TRÚC LẬP TRÌNH ÐIỀU KHI[.]
Trang 11
KỸ THUẬT LẬP TRÌNH CƠ BẢN
Trang 2CHƯƠNG 1 TỔNG QUAN VỀ KỸ THUẬT LẬP TRÌNH
CHƯƠNG 2 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C
CHƯƠNG 3 CẤU TRÚC LẬP TRÌNH ÐIỀU KHIỂN
CHƯƠNG 4 CHƯƠNG TRÌNH CON
CHƯƠNG 5 CẤU TRÚC DỮ LIỆU MẢNG
CHƯƠNG 6 KIỂU DỮ LIỆU CÓ CẤU TRÚC
CHƯƠNG 7 KIỂU DỮ LIỆU CON TRỎ VÀ CHUỖI KÝ TỰ
NỘI DUNG BÀI GIẢNG
Trang 3I Một số khái niệm
2
Chương 1 Tổng Quan Về Kỹ Thuật Lập Trình
II Giải thuật & Biểu diễn giải thuật
Trang 4Làm theo “lệnh” của con người.
ðiểm mạnh là tính toán với tốc ñộ cao (hàng tỷ phéptính trên giây)
Làm thế nào ñể “ra lệnh” cho máy tính?
Lập ra những chương trình cho máy tính
Chương trình?
Chương trình (Phần mềm) là ra lệnh cho máy tínhbiết phải làm gì, như thế nào,…
Trang 54
Muốn “ra lệnh” cho máy tính:
Sử dụng một “ngôn ngữ” chung ngôn ngữ lậptrình (programming language)
Ngôn ngữ lập trình(programming language )
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
http://vi.wikipedia.org/wiki/Ngôn_ng_lp_trình )
Trang 7Bonus: "Lập trình là một nghệ thuật, và lập trình viên là một nghệ sĩ".
Nữ bá tước Ada Lovelace ñược xem như là lập trình viên ñầu tiên trong lịch sử.
Lập trình viên (Programmer)
Là người viết ra các chương trình máy tính Còn ñược gọi là người phát triển phần mềm (software developer)
Trang 81 Khả năng suy nghĩ một cách Logic
2 Khả năng làm việc nhóm và một mình trong một khoảngthời gian
3 Tính kiên nhẫn
4 Khả năng tự học cao
Các nhân tố cần thiết cho lập trình viên:
Written by: Dương Thà Phết
Trang 101 Dễ lâm vào cảm giác chán nản, dễ bị áp lực
2 Làm thêm giờ là việc thường xuyên
3 Lập trình không phải là một việc dễ dàng
Các khó khăn của nghề lập trình:
Trang 11II GIẢI THUẬT VÀ BIỂU DIỄN GIẢI THUẬT
10
1 Giải thuật là gì?
Giải thuật, thuật giải, thuật toán ñều dùng ñể ám
chỉ một thuật ngữ tiếng Anh có tên là ALGORITHM.
Là một dãy các câu lệnh chặt chẽ và rõ ràng xácñịnh một trình tự thao tác trên một ñối tượng nào ñó saocho sau một số bước hữu hạn thực hiện, ta thu ñượckết quả mong muốn
Trang 12Tính ñơn giản và hiệu quả
ðơn giản: Dễ hiểu, dễ lập trình
Hiệu quả: Tiêu tốn ít thời gian và tài nguyên máy tính
Trang 1312
3 Biểu diễn giải thuật
Liệt kê từng bước
Sử dụng giả ngôn ngữ
Sơ ñồ khối
Trang 1413
3.1 Phương pháp liệt kê từng bước
Tại mỗi bước, sử dụng ngôn ngữ tự nhiên ñể diễn tảcông việc phải làm
Ưu nhược ñiểm
Dễ hiểu, dễ làm
Phụ thuộc vào “cách hành văn” của người diễn ñạt
Với những giải thuật phức tạp, cách diễn ñạt này trởnên rườm rà
Trang 1615
3.2 Diễn ñạt giải thuật bằng giả ngôn ngữ
Dựa trên ngôn ngữ lập trình bậc cao
Gần với ngôn ngữ tự nhiên của con người
Ví dụ:
Ngôn ngữ giả Pascal (tựa Pascal) có các ký phápkhá giống với ngôn ngữ lập trình Pascal, ñược rút gọnsao cho dễ diễn ñạt
Giả ngôn ngữ ñược ñưa ra với mục ñích diễn ñạtcác giải thuật sao cho gần với ngôn ngữ lập trình vàngôn ngữ tự nhiên
Sử dụng giả ngôn ngữ khiến việc chuyển từ giảithuật sang chương trình dễ dàng hơn
Trang 17UNTIL (i>N)
In S
Trang 1817
3.3 Diễn ñạt giải thuật bằng sơ ñồ khối (block diagram)
Sử dụng các hình khối ñể minh hoạ cho các lệnh hay thao tác
Sử dụng mũi tên ñể diễn ñạt thứ tự thực hiện
ðây là cách diễn ñạt khoa học, có tính nhất quán cao
Các hình khối cơ bản
Khối bắt ñầu
Khối kết thúc
Khối thao tác cụ thể
Khối kiểm tra ñiều kiện
Khối vào/ra dữ liệu
Khối gọi chương trình con
Trang 1918
Các ký hiệu khối
Trang 2019
Ví dụ: Tính chu vi, diện tích HCN biết 2 cạnh
Trang 2120
Ví dụ: Tính chu vi, diện tích tam giác
Trang 2221
Phần mềm thiết kế thuật toán
Phần mềm Crocodile ICT(6.5) dùng ñể thiết kế thuậttoán của hãng Crocodile (Minh họa)
Trang 2322
Một số lưu ñồ thuật toán
Lưu ñồ thuật toán tìm giá trị lớn nhất trong dãy số
Trang 2423
Lưu ñồ thuật toán tìm vị trí xuất hiện của số trong dãy
Lần lượt so sánh số ñã cho với các phần tử trong dãy Nếu kết quả so sánh là bằng nhau thì ghi nhận vị trí và kết thúc
Trang 2625
Lưu ñồ thuật toán tìm tất cả các vị trí xuất hiện của số trong dãy
Lần lượt so sánh số ñã cho với các phần tử trong dãy
Nếu kết quả so sánh là bằng nhau thì ghi nhận số lần tìm thấy và in vị trí Kết thúc dãy in kết quả không tìm thấy hoặc số lần tìm thấy
Trang 27I Giới thiệu
26
Chương 2 Tổng Quan Về Ngôn Ngữ Lập Trình C
IV Kiểu dữ liệu, Biến và Hằng
V Các phép toán
VI Hàm nhập xuất
II Cài ñặt và sử dụng Visual C++
III L ệnh, khối lệnh
Trang 28I GIỚI THIỆU
27
C là ngôn ngữ lập trình rất mạnh và ñược sử dụngrộng rãi khắp thế giới
Ngôn ngữ C (Tiền thân là ngôn ngữ B) ñược thiết kếbởi nhà khoa học Dennis Ritchie tại phòng thí nghiệm BeelTelephone (Mỹ) vào năm 1972
Nhưng sau ñó nhiều nhà lập trình tung ra rất nhiềuphiên bản C cuối cùng viện dịnh chuẩn quốc gia Mỹ ñã họp
và ñịnh ra chuẩn cho ngôn ngữ C gọi là AnSi C
khóa
1 Lịch sử ra ñời
Trang 292 Chu trình triển khai chương trình C
28
Bước 1: Tạo tập tin C hoặc CPP
Bước 2: Tạo tập tin OBJ
Bước 3: Tạo tập tin EXE
Bước 4 : Chạy chương trình
Trang 303 ðặc ñiểm ngôn ngữ lập trình C
Bộ lệnh phù hợp với phương pháp lập trình cấu trúc
Kiểu dữ liệu phong phú, cho phép ñịnh nghĩa kiểu dữ
liệu mới
Linh ñộng về cú pháp
29
Trang 3130
II CÀI ðẶT VÀ SỬ DỤNG VISUAL C++ 6.0
Bộ cài ñặt gồm:
ðĩa Ms Visual Studio 6.0
MSDN cho Visual Studio 6.0
SP6.0 cho Visual Studio 6.0
Trang 33Tab Projects chọn Win32 Console ApplicationProject name: Nhập tên của dự án (Ví dụ Chuong2)Location: Vị trí lưu dự án (Ví dụ: D\BaitapC
Trang 34Bước 4: Chọn An empty Project, sau ñó chọn Finish
33
Trang 35Bước 5: Chọn OK, kết thúc việc tạo Project
34
Trang 37Giao diện gồm 2 phần chính
Cửa sổ bên trái: cửa sổ Workspace (nếu không thấy
cửa sổ này thì vào menu View/ Workspace hoặc nhấnphím Alt + số 0)
Cửa sổ bên phải: cửa sổ viết code
36
Trang 38Mô tả cửa sổ Workspace
Sau khi chọn dấu + ở tab FileView:
Source Files (*.cpp): Chứa các file cài ñặt các hàm
Header Files (*.h): Chứa các file khai báo (hàm, biến toàn cục, kiểu cấutrúc, …)
Resource Files: Chứa các tàinguyên (icon, bitmap, dialog, …) ðối với lập trình ứng dụng Console thì không dùng ñến.
37
Trang 392 Tạo mới File
Click phải vào thư mục Source File, chọn Add Files to Folder …
Nhập Xinchao.cpp vào ô File name, chọn OK, sau ñó
chọn Yes(Không thay ñổi ñường dẫn mặc ñịnh)
38
ðể ñơn giản khi bắt ñầu tìm hiểu ngôn ngữ C, ta chỉ cần tạo một file
Trang 4039
Nhập tên file
Trang 41Sau khi tạo xong file Xinchao, cửa sổ workspace sẽ códạng sau (kiểm tra lại vị trí của file):
40
Trang 43Cấu trúc file Chương trình
#include <file chứa thư viện hàm>
Khai báo hằng, biến toàn cục (nếu có)
void main(){
Các lệnh;
}
42
Trang 444 Dịch, sửa lỗi và chạy chương trình.
Biên dịch sang tập tin ñối tượng(.obj), kiểm tra lỗi: Ctrl+ F7
Biên dịch sang tập tin thực thi exe: F7
Nếu có thông báo lỗi (error) thì nhấn F4 ñể tìm, quan sát
và sửa lỗi
Chạy chương trình: Ctrl + F5
43
Trang 4544
Cửa sổ báo lỗi
Lỗi do thiếu dấu ; cuối dòng lệnh
Trang 4645
Kết quả thực thi thành công
Trang 475 Mở Project có sẳn
Cách 1: Mở từ menu VC
- Khởi ñộng VC
- Vào menu File/ Open Workspace
- Chọn thư mục chứa Project, chọn tên Project, sau ñóchọn Open
46
Trang 48Double click vào 1 trong 2 file có ñánh dấu mũi tên
(Lưu ý: Khi chép Project có thể xóa thư mục Debug, vì
thư mục này sẽ ñược tạo khi chạy chương trình)47
Cách 2: Mở trực tiếp từ Explore
Mở thư mục chứa Project
Trang 492 Khối lệnh
Khối lệnh gồm nhiều lệnh ñược ñặt trong cặp dấu ngoặc{ }
48
Trang 50Không nên ñặt nhiều lệnh trên cùng một dòng, ngay
cả các khai báo biến, nếu các biến có khác kiểu cũngnên ñặt trên các dòng khác nhau
49
3 Qui ước viết lệnh trong C
Trang 52Kiểu tự ñịnh nghĩa: Dùng những kiểu cơ sở ñể xây
dựng thành những kiểu dữ liệu mới cho phù hợp với bàitoán (Kiểu cấu trúc - struct)
Trang 53Các kiểu dữ liệu cơ sở
KIỂU LIÊN TỤC (SỐ THỰC)
KIỂU RỜI RẠC (SỐ NGUYÊN)
2 unsigned char Sô nguyên dương 1 byte
4 unsigned short Số nguyên dương 2 bytes
6 unsigned int Sô nguyên dương 4 bytes
8 unsigned long Sô nguyên dương 4 bytes
KIỂU LUẬN LÝ
1 bool Gồm 2 giá trị: true hoặc false
52
Trang 54PHẢI khai báo BiẾN trước khi sử dụng
53
Trang 55Khai báo nhiều biến cùng kiểu
<Kiểu dữ liệu> tênbiến1, tênbiến2, tênbiến3;
Ví dụ:
int a, x, y;
Trang 56Bắt ñầu bằng một ký tự
Các ký tự trong tên biến chỉ có thể là các ký tự chữ, sốhoặc dấu gạch dưới (_)
Không có khoảng trắng trong tên biến
Không dài quá 256 ký tự
Không ñược trùng với các từ khoá của C
struct, long, int, while, for, if, else, continue, typedef, do, goto, case, define, …
Không ñược trùng với phạm vi khai báo
Trang 57Khai báo và gán giá trị ñầu cho biến
<Kiểu dữ liệu> tênbiến = giá trị;
Trang 60TOÁN TỬ TĂNG GIẢM
trước thi tăng giảm trước rồitính B.Thức hoặc ngược lại
Trang 6362
Trang 6463
Thứ tự ưu tiên của các phép toán thường dùng theo trật tự
từ trái sang phải từ trên xuống dưới như sau:
+ - < <= > >= == != && ||
Trang 65Các lỗi thường gặp khi viết chương trình
Quên khai báo các biến sử dụng trong chương trình.
Lưu một giá trị vào một biến nhưng không cùng kiểu
dữ liệu với biến
Sử dụng biến trong một biểu thức khi nó chưa có giá
trị Khi ñó giá trị của biến là một giá trị bất kỳ và kếtquả của biểu thức là sai
Sử dụng giá trị của phép chia không chính xác Lỗi này
thường xuất hiện trong các biểu thức có nhiều toánhạng và lỗi này rất khó phát hiện
Ví dụ: 3.2 + 2/3 + 1.5 thì sẽ cho kết quả sẽ bằng 4.7 thay
vì kết quả ñúng phải bằng 5.36666666666667
Sử dụng một biểu thức trong ñó chứa nhiều loại dữ
liệu nhưng lại không biết chắc chắn kiểu dữ liệu của
Trang 66cout<<“Gia tri cua a = “<<a;
Các biến và chuỗi cách nhau bởi dấu << (chuỗi nằm trong cặp dấu nháy kép “” )
Ví dụ:
int b = 7, c = 9;
cout<< “Gia tri của b =“ << b << “ gia tri cua c = “ << c; 65
Trang 685.3 5.339
Trang 69\\ Xuất dấu chéo ngược“\” cout<<“ \\ ”;Kết quả: \
\0 Ký tự Null Gán ký tự kết thúc của chuỗi
\a Alert : Tiếng bip
\t Tab vào một ñoạn ký tựtrắng cout<<"xyz\tzyx”;Kết quả: xyz zyx
\b Xuất lùi về sau cout<<"xyz\t\bzyx”;Kết quả: xyzzyx
\n hoặc
Trang 747. Viết chương trình nhập vào số nguyên dương n, tínhtổng từ 1 ñến n và xuất kết quả ra màn hình
8. Viết chương trình cho phép nhập vào một số ño nhiệt
ñộ theo ñộ Fahrenheit và xuất ra nhiệt ñộ tươngñương của nó theo ñộ Celsius, sử dụng công thứcchuyển ñổi:
9. Viết chương trình nhập vào 3 số nguyên a, b và c,
cho biết 3 số vừa nhập có thứ tự tăng dần (a<b<c)
) 32
( 9
Trang 75Chương 3 Cấu Trúc Lập Trình ðiều Khiển
I Cấu trúc rẽ nhánh
II Cấu trúc lựa chọn
III Cấu trúc lặp: for
IV Cấu trúc lặp: while, do while
V Cấu trúc lặp: do while
VI.Lệnh Break, Continue và Debug lỗi
Trang 7776
Nếu biểu thức ñúng thì sẽ thực hiện khối lệnh 1 và sau ñó sẽthực hiện các lệnh tiếp sau khối lệnh 2
Nếu biểu thức sai thì bỏ qua khối lệnh 1 mà thực hiện khối lệnh 2 sau ñó thực hiện tiếp các lệnh tiếp sau khối lệnh 2
if ( Biểu thức ðK)
khối lệnh 1;
Trang 78
Ví du: Viết chương trình nhập vào một số nguyên từ
1 ñến 10, nếu nhập sai thì thông báo
77
Trang 7978
Trang 82Ví du: Giải va biện luận phương trình: ax+b=0
81
Trang 83else cout<<"Phuong trinh vo nghiem”;
else cout<<"Phuong trinh co nghiem x = “<< -b / a;
}
82
Trang 84cout<<"Gia tri cua a la chan”;
cout<<"Tong cua a va b la: " <<(a + b);
83
1
Trang 87BÀI TẬP – VẼ LƯU ðỒ VÀ VIẾT CHƯƠNG TRÌNH
1 Nhập vào hai sô nguyên a, b In ra màn hình gia trị lớn
nhất
2 Cho ba sô a, b, c ñọc vào tư bàn phím Hãy tìm gia trị
lớn nhất của ba sô trên va in ra kết quả
3 Cho ba sô a, b, c ñọc vào tư bàn phím Hãy in ra màn
hình theo thư tư tăng dần các sô (Chỉ ñược dùng thêmhai biến phu)
4 Viết chương trình nhập vào một sô nguyên n gồm ba
chư£ sô Xuất ra màn hình chư£ sô lớn nhất ở vị trí nào?
Ví du: n=291 Chưo sôp lớn nhất nằm ở hàng chục (chữ
số 9).
86
Trang 885 Viết chương trình nhập vào sô nguyên n gồm ba chư£
sô Xuất ra màn hình theo thư tư tăng dần của các chư£ sô
Ví du: n=291 Xuất ra 129.
6 Nhập vào ngày, tháng, năm Kiểm tra xem ngày, tháng,
năm ño có hợp lê hay không? In kết quả ra màn hình
7 Nhập vào giơ, phút, giây Kiểm tra xem giơ, phút, giây
ño có hợp lê hay không? In kết quả ra màn hình
8 Viết chương trình nhập vào ngày, tháng, năm hợp lê
Cho biết năm này có phải là năm nhuận hay không? In kết quả ra màn hình
9 Viết chương trình tính diện tích va chu vi các hình: tam
giác, hình vuông, hình chư£ nhật va hình tròn với những
Trang 8910 Viết chương trình tính tiền cước TAXI Biết rằng:
km ñầu tiên là 13000 ñ
Mỗi km tiếp theo là 12000 ñ
Nếu lớn hơn 30km thiu mỗi km thêm sẽ là 11000 ñ
Hãy nhập sô km sau ño in ra sô tiền phải tra
11 Nhập vào 3 sô nguyên dương Kiểm tra xem 3 sô ño có
lập thành tam giác không? Nếu có hãy cho biết tam giác ño thuộc loại nào? (Cân, vuông, ñều, …)
12 Viết chương trình nhập vào sô nguyên dương n Kiểm
tra xem n có phải là sô chính phương hay không? (sô chính phương là sô khi lấy căn bậc 2 có kết quả là nguyên)
88
Trang 90case n2:
các câu lệnh ; break ;
………
case nk:
<các câu lệnh> ; break ;
Trang 91Với:
ni là các hằng sô¬ nguyên hoặc ky¬ tư.
Phu thuộc vào gia trị của biểu thức sau switch, nếu:
Gia trị này = ni thi thực hiện câu lệnh sau case ni
Khi gia trị biểu thức không thỏa tất cả các ni thi thực
hiện câu lệnh sau default nếu có, hoặc thoát khỏi câu lệnh switch.
Khi chương trình ña£ thực hiện xong câu lệnh của
case ni nào ño thi nó sẽ thực hiện luôn các lệnh thuộc
case bên dưới nó mà không xét lại ñiều kiện (do các
ni ñược xem như các nhãn)
Vậy, ñê chương trình thoát khỏi lệnh switch sau khi thực hiện xong một trường hợp, ta dùng lệnh break 90
Trang 92case 1: cout<<"So mot”; break;
case 2: cout<<"So hai"; break;
case 3: cout<<"So ba”; break;
case 4: cout<<"So bon”; break;
case 5: cout<<"So nam”; break;
default : cout<<"Khong doc duoc";
}
Ví dụ: Nhập vào số nguyên n có giá trị từ 1 ñến 5 In cách ñọc
của số ñó ra màn hình
Trang 93BÀI TẬP – VẼ LƯU ðỒ VÀ VIẾT CHƯƠNG TRÌNH
13 Viết chương trình nhập vào 1 số nguyên dương gồm 3 chữ số, in ra cách ñọc của số này
92
Trang 9493
III CẤU TRÚC LẶP - FOR
for (<BT khởi gán> ; <BT ñiều kiện>; <BT tăng/giảm>)
Trang 9594
Nguyên lý hoạt ñộng
vòng lặp, thực hiện bi?u th@c tăng giDm Quay trơ~ lại bước 2.
Ngược lại thoát khỏi lặp.
Trang 97Ví du: Tính tổng: S=1+2+3+ +n , với n>0
96
Trang 98IV CẤU TRÚC LẶP - WHILE
vòng lặp, thực hiện bi?u th@c tăng giDm Quay trơ~ lại bước 2.
Ngược lại thoát khỏi lặp.
Trang 99Ví du: In ra màn hình 10 dòng chữ “Xin chao”
Trang 100< Khởi gán>
do{
<khối lệnh>;
<biểu thức tăng/ giảm>;
} while (biểu thức ñiều kiện);
99
V CẤU TRÚC LẶP – DO WHILE
Thực hiện khối lệnh cho ñến khi biểu thức có giap trị
bằng false.
Cấu trúc lặp do…while thường dùng cho trường hợp
nhập có kiểm tra ñiều kiện
Trang 101Ví du: Nhập vào một số nguyên dương, nếu nhập vào số
bằng hoặc nhỏ hơn 0 thì thông báo lỗi và yêu cầu nhập lại
Trang 102Ngược lại với cấu trúc lặp for và while (kiểm tra ñiều
kiện trước khi thực hiện lặp), vòng lặp do…while thực
hiện lệnh lặp rồi mới kiểm tra ñiều kiện Do ñop vòng lặp
do while thực hiện lệnh ít nhất một lần.
101
Trang 103Tuy nhiên, cần phân biệt với lệnh return là lệnh trả về
từ hàm, nghĩa là thoát khỏi hàm ñang thi hành, nêncũng giúp thoát luôn khỏi tất cả các vòng lặp
102
VI LỆNH BREAK VÀ CONTINUE
Trang 104Nếu có các lệnh còn lại (cùng trong vòng lặp) ñặt saucontinue sẽ không ñược thực hiện
Nói tóm lại, lệnh continue thường dùng ñể bỏ qua mộtlần lặp nào ñó nếu thỏa ñiều kiện
103