Xem mẫu
- ỦY BAN NHÂN DÂN TỈNH AN GIANG
TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG
GIÁO TRÌNH
LẬP TRÌNH CĂN BẢN
NGHỀ: LẬP TRÌNH MÁY TÍNH
Trình độ trung cấp/cao đẳng
(Ban hành theo Quyết định số: /QĐ-CĐN ngày tháng năm 20
của Hiệu trưởng trường Cao đẳng nghề An Giang)
Tác giả: Vương Thị Minh Nguyệt
Năm ban hành : 2017
- TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể đƣợc
phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh
thiếu lành mạnh sẽ bị nghiêm cấm.
LỜI GIỚI THIỆU
Trƣớc đây, để tạo ra chƣơng trình máy tính ngƣời ta phải làm việc trực tiếp với
các con số 0 hoặc 1, hay còn gọi là ngôn ngữ máy. Công việc này vô cùng khó khăn,
chiếm nhiều thời gian, công sức và đặc biệt dễ gây ra lỗi. Để khắc phục nhƣợc điểm
này, ngƣời ta đề xuất ra hợp ngữ, một ngôn ngữ cho phép thay thế dãy 0 hoặc 1 này
bởi các từ gợi nhớ tiếng Anh. Tuy nhiên, cải tiến này vẫn còn chƣa thật thích hợp với
đa số ngƣời dùng máy tính, những ngƣời luôn mong muốn các lệnh chính là ý nghĩa
của các thao tác mà nó mô tả. Vì vậy, ngay từ những năm 1950, ngƣời ta đã xây dựng
những ngôn ngữ lập trình mà câu lệnh của nó gần với ngôn ngữ tự nhiên. Các ngôn
ngữ này đƣợc gọi là ngôn ngữ lập trình bậc cao.
Lập trình căn bản với Pascal và C, C++
Đây là 2 ngôn ngữ căn bản và phổ biến nhất mà hầu nhƣ sinh viên nào cũng cần
phải học qua trong giai đoạn mới bắt đầu học lập trình
Giáo trình này đƣợc thiết kế theo từng mô đun/ môn học thuộc hệ thống mô
đun/môn học của một chƣơng trình, để đào tạo hoàn chỉnh nghề Lập trình máy tính
ở cấp trình độ bậc cao và đƣợc dùng làm giáo trình cho học viên trong các khóa đào
tạo, cũng có thể đƣợc sử dụng cho đào tạo ngắn hạn hoặc cho các công nhân kỹ thuật.
Mục tiêu thực hiện của môn học:
- Phân tích chƣơng trình: xác định nhiệm vụ chƣơng trình (phải làm gì), xác định
dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán.
- Thiết kế chƣơng trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công
việc đã xác định trong giai đoạn phân tích.
- Viết chƣơng trình.
- Vận dụng điều kiện, trợ giúp môi trƣờng của ngôn ngữ lập trình, chẳng hạn:
trình biên tập mã lệnh.
- Mô tả đƣợc hằng và biến dùng trong chƣơng trình.
- Vận dụng quy tắc cú pháp của ngôn ngữ lập trình.
- Vận dụng các cấu trúc điều khiển, cấu trúc lặp.
1
- - Trình bày chƣơng trình có chú thích (tóm tắt) cho từng đoạn mã, thuận lợi cho
việc theo dõi chức năng của chúng.
- Thử nghiệm đƣợc chƣơng trình:
- Sử dụng bộ dữ liệu thử, thử nghiệm các giai đoạn, phân tích giá trị biến qua
từng đoạn mã (mô đun chƣơng trình)
- Sử dụng công cụ: dùng Debugger của hệ thống để phân tích biến và cấu trúc dữ
liệu tƣơng ứng.
Nội dung chính của môn học:
CHƢƠNG 1: THUẬT TOÁN
CHƢƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++
CHƢƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN
CHƢƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN
CHƢƠNG 5: HÀM
CHƢƠNG 6: MẢNG
CHƢƠNG 7: CON TRỎ
CHƢƠNG 8: CẤU TRÚC
Trong quá trình biên soạn, mặc dù đã cố gắng tham khảo nhiều tài liệu và giáo
trình khác nhƣng tác giả không khỏi tránh đƣợc những thiếu sót và hạn chế. Tác giả
chân thành mong đợi những nhận xét, đánh giá và góp ý của sinh viên và đồng nghiệp
để cuốn giáo trình ngày một hoàn thiện hơn.
An Giang, ngày tháng năm 20
Tham gia biên soạn
Vương Thị Minh Nguyệt
2
- MỤC LỤC
ĐỀ MỤC TRANG
LỜI GIỚI THIỆU ................................................................................................................................1
CHƢƠNGTRÌNH MÔN HỌC .............................................................................................................6
CHƢƠNG 1: THUẬT TOÁN ..............................................................................................................9
I.KHÁI NIỆM ................................................................................................................................... 9
II.CÁC ĐẶC TRƢNG CỦA THUẬT TOÁN ................................................................................ 10
III. PHƢƠNG PHÁP BIỂU DIỄN THUẬT TOÁN ....................................................................... 10
BÀI TẬP ......................................................................................................................................... 16
CHƢƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++ ............................................................17
I.LỊCH SỬ HÌNH THÀNH ............................................................................................................ 17
II.ĐẶC ĐIỂM ................................................................................................................................. 17
III.CẤU TRÚC MỘT CHƢƠNG TRÌNH C++ ............................................................................. 18
IV.MỘT SỐ VÍ DỤ MẪU.............................................................................................................. 19
V. CÀI ĐẶT CHƢƠNG TRÌNH .................................................................................................... 20
VI. KHỞI ĐỘNG CHƢƠNG TRÌNH ............................................................................................. 20
VII.SOẠN THẢO CHƢƠNG TRÌNH ........................................................................................... 21
VIII.THOÁT KHỎI CHƢƠNG TRÌNH ........................................................................................ 23
BÀI TẬP ......................................................................................................................................... 23
CHƢƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN .......................................24
I.CÁC THÀNH PHẦN ................................................................................................................... 24
II.CÁC KIỂU KIỂU DỮ LIỆU CƠ BẢN ...................................................................................... 26
III. HẰNG ....................................................................................................................................... 28
VI. CÁC PHÉP TOÁN CỦA C++ .................................................................................................. 29
V.XUẤT, NHẬP DỮ LIỆU .......................................................................................................... 32
BÀI TẬP ......................................................................................................................................... 39
CHƢƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN ................................................................................40
I.LỆNH ĐƠN VÀ LỆNH PHỨC ................................................................................................... 40
II.CẤU TRÚC ĐIỀU KIỆN if .. else.............................................................................................. 41
III. CẤU TRÚC LỰA CHỌN switch .. case................................................................................... 44
3
- IV. CÁC CẤU TRÚC LẶP ............................................................................................................. 46
V.CÂU LỆNH break, continue, goto và hàm exit .......................................................................... 52
BÀI TẬP ......................................................................................................................................... 55
CHƢƠNG 5: HÀM ............................................................................................................................57
I.KHÁI NIỆM ................................................................................................................................. 57
II.KHAI BÁO HÀM ....................................................................................................................... 57
III. KẾT QUẢ TRẢ VỀ CỦA HÀM .............................................................................................. 60
IV. CÁCH TRUYỀN THAM SỐ CHO HÀM ................................................................................ 60
V.ĐỆ QUI ....................................................................................................................................... 62
BÀI TẬP ......................................................................................................................................... 66
CHƢƠNG 6: MẢNG .........................................................................................................................67
I.KHÁI NIỆM ................................................................................................................................. 67
II.KHAI BÁO MẢNG .................................................................................................................... 67
III.KHỞI TẠO MẢNG ................................................................................................................... 68
IV. DÙNG MẢNG LÀM THAM SỐ ............................................................................................. 70
V. MẢNG NHIỀU CHIỀU ............................................................................................................ 72
BÀI TẬP ......................................................................................................................................... 74
CHƢƠNG 7: CON TRỎ ....................................................................................................................75
I.KHÁI NIỆM ................................................................................................................................. 76
II.CON TRỎ VÀ ĐỊA CHỈ ............................................................................................................ 76
III.KHAI BÁO BIẾN KIỂU CON TRỎ ........................................................................................ 78
IV. CÁC PHÉP TOÁN.................................................................................................................... 78
V.CON TRỎ MẢNG...................................................................................................................... 80
VI. CON TRỎ HẰNG ..................................................................................................................... 82
VII.CON TRỎ KHÔNG KIỂU ...................................................................................................... 83
VIII.KHỞI TẠO CON TRỎ........................................................................................................... 84
IX. CON TRỎ TRỎ TỚI CON TRỎ .............................................................................................. 85
X.CON TRỎ HÀM ........................................................................................................................ 85
BÀI TẬP ......................................................................................................................................... 87
CHƢƠNG 8: CẤU TRÚC..................................................................................................................88
I.KHÁI NIỆM ................................................................................................................................. 88
II.KHAI BÁO CẤU TRÚC ............................................................................................................ 88
4
- III.TRUY CẬP ĐẾN CÁC THÀNH PHẦN CỦA CẤU TRÚC.................................................... 92
IV. CON TRỎ CẤU TRÚC VÀ ĐỊA CHỈ CẤU TRÚC ................................................................ 95
BÀI TẬP ......................................................................................................................................... 98
CÁC THUẬT NGỮ CHUYÊN MÔN................................................................................................99
TÀI LIỆU THAM KHẢO ..................................................................................................................99
5
- CHƢƠNGTRÌNH MÔN HỌC
Tên môn học: LẬP TRÌNH CĂN BẢN
Mã số môn học: MH 10
Thời gian thực hiện môn học: 75 giờ (Lý thuyết: 20 giờ, thực hành, thí nghệm,
thảo luận: 51 giờ, kiểm tra: 4 giờ).
I. VỊ TRÍ, TÍNH CHẤT CỦA MÔN HỌC:
1. Vị trí:
- Thuộc nhóm môn: Cơ sở
- Đƣợc bố trí sau các môn: Môn học đƣợc bố trí sau khi học sinh học xong các
môn: toán cho tin học và tin học căn bản.
2.Tính chất:
- Là môn học chuyên môn nghề bắt buộc, là nền tảng để HSSV có thể làm quen
với kiến thức lập trình và học các môn học mô đun liên quan.
II. MỤC TIÊU CỦA MÔN HỌC:
1. Về kiến thức
- Phân tích chƣơng trình: xác định nhiệm vụ chƣơng trình (phải làm gì), xác định
dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán.
- Thiết kế chƣơng trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công
việc đã xác định trong giai đoạn phân tích.
2. Về kỹ năng
- Vận dụng điều kiện, trợ giúp môi trƣờng của ngôn ngữ lập trình, chẳng
- Trình bày chƣơng trình có chú thích (tóm tắt) cho từng đoạn mã, thuận lợi cho
việc theo dõi chức năng của chúng.
- Thử nghiệm đƣợc chƣơng trình
3. Về năng lực tự chủ và trách nhiệm
- Nghiêm túc trong học tập và thực hiện tốt các yêu cầu đƣợc giao.
- Luôn động não suy nghĩ. Thƣờng xuyên luyện tập tƣ duy trong việc học
- Thực hiện học tập và thực hành nhóm.
III. NỘI DUNG MÔN HỌC:
Chƣơng 1: Thuật toán
I. Khái niệm
II. Các đặc trƣng của thuật toán
III. Phƣơng pháp biểu diễn
Chƣơng 2: Giới thiệu ngôn ngữ lập trình C++
I. Lịch sử hình thành
II. Đặc điểm
6
- III. Cấu trúc của một chƣơng trình C++
IV. Một số ví dụ mẫu
V. Cài đặt chƣơng trình
VI. Khởi động chƣơng trình
VII. Soạn thảo chƣơng trình
VIII. Thoát khỏi chƣơng trình
Chƣơng 3: Các thành phần và các kiểu dữ liệu cơ bản
I. Các thành phần
II. Các kiểu dữ liệu căn bản
III. Hằng
IV. Các phép toán của C++
V. Xuất nhập dữ liệu
Chƣơng 4: Các cấu trúc điều khiển
I. Lệnh đơn và lệnh phức
II. Cấu trúc điều kiện: if .. else
III. Cấu trúc lựa chọn: switch..case
IV. Các cấu trúc lặp
V. Câu lệnh break, continue, goto và hàm exit
Chƣơng 5: Hàm
I. Khái niệm
II. Khai báo hàm
III. Kết quả trả về của hàm – Lệnh return
IV. Cách truyền tham số cho hàm
V. Đệ qui
Chƣơng 6: Mảng
I. Khái niệm
II. Khai báo mảng
III. Khởi tạo mảng
IV. Dùng mảng làm tham số
Chƣơng 7: Con trỏ
I. Khái niệm
II. Toán tử lấy địa chỉ (&)
III. Toán tử tham chiếu (*)
IV. Khai báo biến kiếu con trỏ
V. Các phép toán
7
- VI. Con trỏ hằng
VII. Con trỏ mảng
VIII. Khởi tạo con trỏ
IX. Con trỏ trỏ tới con trỏ
X. Con trỏ không kiểu
XI. Con trỏ hàm
Chƣơng 8: Cấu trúc
I. Khái niệm cấu trúc
II. Khai báo cấu trúc
III. Truy cập đến các thành phần của cấu trúc
IV. Ví dụ cấu trúc
8
- CHƢƠNG 1
THUẬT TOÁN
Giới thiệu
Thuật toán là một hệ thống chặt chẽ và rõ ràng các qui tắc nhằm xác định một
dãy các thao tác trên những đối tƣợng, sao cho sau một số hữu hạn bƣớc thực hiện các
thao tác, ta đạt đƣợc mục tiêu định trƣớc.
Bài này sẽ trình bày khái niệm thuật toán, các đặc trƣng của thuật toán, phƣơng
pháp biểu diễn của thuật toán
Mục tiêu
Trình bày đƣợc khái niệm thuật toán, các đặc trƣng của thuật toán, phƣơng pháp
biểu diễn của thuật toán
Nội dung chính
I. KHÁI NIỆM
Thuật toán là một hệ thống chặt chẽ và rõ ràng các qui tắc nhằm xác định một
dãy các thao tác trên những đối tƣợng, sao cho sau một số hữu hạn bƣớc thực hiện các
thao tác, ta đạt đƣợc mục tiêu định trƣớc.
Ví dụ 1: Giải phƣơng trình bậc hai ax2 + bx + c = 0
Nhập a, b, c
Nếu a = 0 thì kết thúc thuật toán (phƣơng trình đã cho không phải là phƣơng
trình bậc hai).
Nếu a ≠ 0 thì tính delta = b2 – 4ac
Nếu delta > 0
Phƣơng trình có hai nghiệm phân biệt
b delta b delta
x1 ; x2
2a 2a
Kết thúc thuật toán.
Nếu delta = 0
b
Phƣơng trình có nghiệp kép x
2a
Kết thúc thuật toán.
Nếu delta < 0
Phƣơng trình vô nghiệm.
Kết thúc thuật toán.
9
- II. CÁC ĐẶC TRƢNG CỦA THUẬT TOÁN
1. Tính xác định
Ở mỗi bƣớc của thuật toán, các thao tác phải hết sức rõ ràng. Không thể gây nên
sự nhập nhằng, lẫn lộn, tùy tiện. Nói cách khác là trong cùng một điều kiện, hai bộ xử
lí cùng thực hiện một bƣớc của thuật toán thì phải cho cùng một kết quả.
2. Tính hữu hạn dừng
Một thuật toán bao giờ cũng phải dừng lại sau một số hữu hạn bƣớc.
3. Tính đúng đắn
Sau khi thực hiện tất cả các lệnh của thuật toán ta phải đƣợc kết quả mong muốn,
kết quả đó thƣờng đƣợc xác định theo định nghĩa có trƣớc.
4. Tính phổ thông
Thuật toán có thể giải bất kì bài toán nào trong cùng một lớp các bài toán, có
nghĩa là thuật toán có thể làm việc với các dữ liệu khác nhau, trong một miền xác định
và luôn dẫn đến kết quả mong muốn.
5. Tính có đại lƣợng vào và ra
Khi bắt đầu một thuật toán bao giờ cũng nhận các đại lƣợng vào mà ta thƣờng
gọi là dữ liệu vào, các dữ liệu vào thƣờng lất từ một tập xác định cho trƣớc.
Sau khi kết thúc, một thuật toán bao giờ cũng cho ta mooth số đại lƣợng ra tùy
theo chức năng mà thuật toán đảm nhiệm, chúng thƣờng đƣợc gọi là dữ liệu ra.
6. Tính hiệu quả
Tính hiệu quả của một thuật toán đƣợc đánh giá dựa trên các tiêu chuẩn sau:
- Dung lƣợng bộ nhớ cần có.
- Số các phép tính cần thực hiện.
- Thời gian cần thiết để chạy.
- Có dễ hiểu đối với con ngƣời không.
- Có dễ cài đặt trên máy không.
III. PHƢƠNG PHÁP BIỂU DIỄN THUẬT TOÁN
Khi chứng minh hoặc giải một bài toán trong toán học, ta thƣờng dùng những
ngôn từ toán học nhƣ : "ta có", "điều phải chứng minh", "giả thuyết", ... và sử dụng
những phép suy luận toán học nhƣ phép suy ra, tƣơng đƣơng,...Thuật toán là một
phƣơng pháp thể hiện lời giải bài toán nên cũng phải tuân theo một số quy tắc nhất
định. Ðể có thể truyền đạt thuật toán cho ngƣời khác hay chuyển thuật toán thành
chƣơng trình máy tính, ta phải có phƣơng pháp biểu diễn thuật toán. Có 3 phƣơng
pháp biểu diễn thuật toán : Dùng ngôn ngữ tự nhiên, dùng lƣu đồ - sơ đồ khối, dùng
mã giả.
10
- 1. Ngôn ngữ tự nhiên
Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, ngƣời ta sử dụng ngôn
ngữ thƣờng ngày để liệt kê các bƣớc của thuật toán (ví dụ 1sử dụng ngôn ngữ tự
nhiên). Phƣơng pháp biểu diễn này không yêu cầu ngƣời viết thuật toán cũng nhƣ
ngƣời đọc thuật toán phải nắm các quy tắc. Tuy vậy, cách biểu diễn này thƣờng dài
dòng, không thể hiện rõ cấu trúc của thuật toán, đôi lúc gây hiểu lầm hoặc khó hiểu
cho ngƣời đọc. Gần nhƣ không có một quy tắc cố định nào trong việc thể hiện thuật
toán bằng ngôn ngữ tự nhiên. Tuy vậy, để dễ đọc, ta nên viết các bƣớc con lùi vào bên
phải và đánh số bƣớc theo quy tắc phân cấp nhƣ 1, 1.1, 1.1.1.
2. Lƣu đồ - sơ đồ khối
Lƣu đồ hay sơ đồ khối là một công cụ trực quan để diễn đạt các thuật toán. Biểu
diễn thuật toán bằng lƣu đồ sẽ giúp ngƣời đọc theo dõi đƣợc sự phân cấp các trƣờng
hợp và quá trình xử lý của thuật toán. Phƣơng pháp lƣu đồ thƣờng đƣợc dùng trong
những thuật toán có tính rắc rối, khó theo dõi đƣợc quá trình xử lý.
Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác. Một
thao tác là thao tác chọn lựa dựa theo một điều kiện nào đó. Chẳng hạn : thao tác "nếu
a = 0 thì kết thúc thuật toán, nếu a ≠ 0 thì tính delta" là thao tác chọn lựa. Các thao
tác còn lại không thuộc loại chọn lựa đƣợc xếp vào loại hành động. Chẳng hạn, "tính
b delta b delta
x1 ; x2 " là một thao tác thuộc loại hành động.
2a 2a
Thao tác chọn lựa (decision)
Thao tác chọn lựa đƣợc biểu diễn bằng hình thoi bên trong chứa biểu thức điều
kiện.
a=0
Thao tác xử lý (process)
Thao tác xử lý đƣợc biểu diễn bằng hình chữ nhật, bên trong chứa nội dung xử
lý.
b delta
x1
2a
Ðƣờng đi (route)
11
- Khi dùng ngôn ngữ tự nhiên, ta mặc định hiểu rằng quá trình thực hiện sẽ lần
lƣợt đi từ bƣớc trƣớc đến bƣớc sau (trừ khi có yêu cầu nhảy sang bƣớc khác). Trong
ngôn ngữ lƣu đồ, do thể hiện các bƣớc bằng hình vẽ và có thể đặt các hình vẽ này ở vị
trí bất kỳ nên ta phải có phƣơng pháp để thể hiện trình tự thực hiện các thao tác.
Hai bƣớc kế tiếp nhau đƣợc nối bằng một cung, trên cung có mũi tên để chỉ
hƣớng thực hiện.
Từ thao tác chọn lựa có thể có đến hai hƣớng đi, một hƣớng ứng với điều kiện
thỏa và một hƣớng ứng với điều kiện không thỏa. Do vậy, ta dùng hai cung xuất phát
từ các đỉnh hình thoi, trên mỗi cung có ký hiệu Ð/Ðúng/Y/Yes để chỉ hƣớng đi ứng
với điều kiện thỏa và ký hiệu S/Sai/N/No để chỉ hƣớng đi ứng với điều kiện không
thỏa.
Delta > 0 S Delta = 0
Đ
Phƣơng trình có 2
nghiệm phân biệt
x1, x2
Ðiểm cuối (terminator)
Ðiểm cuối là điểm khởi đầu và kết thúc của thuật toán, đƣợc biểu diễn bằng hình
ovan, bên trong có ghi chữ bắt đầu/start/begin hoặc kết thúc/end. Ðiểm cuối chỉ có
cung đi ra (điểm khởi đầu) hoặc cung đi vào (điểm kết thúc). Xem lƣu đồ thuật toán
giải phƣơng trình bậc hai ở trên để thấy cách sử dụng của điểm cuối.
Ðiểm nối (connector)
Ðiểm nối đƣợc dùng để nối các phần khác nhau
của một lƣu đồ lại với nhau. Bên trong điểm nối, ta
đặt một ký hiệu để biết sự liên hệ giữa các điểm nối.
Ðiểm nối sang trang (off-page connector)
12
- Tƣơng tự nhƣ điểm nối, nhƣng điểm nối sang trang đƣợc dùng khi lƣu đồ quá
lớn, phải vẽ trên nhiều trang. Bên trong điểm nối sang trang ta cũng đặt một ký hiệu
để biết đƣợc sự liên hệ giữa điểm nối của các trang.
Ở trên chỉ là các ký hiệu cơ bản và thƣờng đƣợc dùng nhất. Trong thực tế, lƣu
đồ còn có nhiều ký hiệu khác nhƣng thƣờng chỉ dùng trong những lƣu đồ lớn và phức
tạp. Ðối với các thuật toán trong cuốn sách này, ta chỉ cần sử dụng các ký hiệu trên là
đủ.
Ví dụ: Vẽ lƣu đồ giải phƣơng trình bậc hai ax2 + bx + c = 0
13
- Bắt đầu
Nhập a, b, c
S
a ≠0
Đ
Delta = b2 – 4 ac
S S
Delta > 0 Delta = 0
Đ Đ
Phƣơng trình có Phƣơng trình vô
Phƣơng trình có nghiệm kép nghiệm
hai nghiệm phân
biệt x1, x2
b
b delta x
x1 2a
2a
Kết thúc
14
- Bảng ký hiệu
Ý nghĩa Ký hiệu
Điểm đầu, cuối
Thao tác chọn
lựa
Thao tác xử lý
Đƣờng đi
Điểm nối KH
Điểm nối sang #STT
trang
3. Mã giả
Tuy sơ đồ khối thể hiện rõ quá trình xử lý và sự phân cấp các trƣờng hợp của
thuật toán nhƣng lại cồng kềnh. Ðể mô tả một thuật toán nhỏ ta phải dùng một không
gian rất lớn. Hơn nữa, lƣu đồ chỉ phân biệt hai thao tác là rẽ nhánh (chọn lựa có điều
kiện) và xử lý mà trong thực tế, các thuật toán còn có thêm các thao tác lặp (Chúng ta
sẽ tìm hiểu về thao tác lặp trong các bài sau).
Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn
ngữ lập trình nào đó để thể hiện thuật toán. Tất nhiên, mọi ngôn ngữ lập trình đều có
những thao tác cơ bản là xử lý, rẽ nhánh và lặp. Dùng mã giả vừa tận dụng đƣợc các
khái niệm trong ngôn ngữ lập trình, vừa giúp ngƣời cài đặt dễ dàng nắm bắt nội dung
thuật toán. Tất nhiên là trong mã giả ta vẫn dùng một phần ngôn ngữ tự nhiên. Một
khi đã vay mƣợn cú pháp và khái niệm của ngôn ngữ lập trình thì chắc chắn mã giả sẽ
bị phụ thuộc vào ngôn ngữ lập trình đó. Chính vì lý do này, chúng ta chƣa vội tìm
hiểu về mã giả trong bài này (vì chúng ta chƣa biết gì về ngôn ngữ lập trình!). Sau khi
tìm hiểu xong bài về thủ tục - hàm bạn sẽ hiểu mã giả là gì !
Một đoạn mã giả của thuật toán giải phƣơng trình bậc hai
if Delta > 0 then begin
x1=(-b-sqrt(delta))/(2*a)
x2=(-b+sqrt(delta))/(2*a)
15
- xuất kết quả : phƣơng trình có hai nghiệm là x1 và x2
end
else
if delta = 0 then
xuất kết quả : phƣơng trình có nghiệm kép là -b/(2*a)
else {trƣờng hợp delta < 0 }
xuất kết quả : phƣơng trình vô nghiệm
BÀI TẬP: xây dựng thuật toán và vẽ sơ đồ khối của các bài toán sau:
1. Tính n!
2. Giải phƣơng trình: ax + b = 0
3. Tính chu vi, diện tích hình tròn biết bán kính r=3cm
4. Đƣa ra màn hình dòng chữ: "Mon hoc lap trinh can ban"
16
- CHƢƠNG 2
GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++
Giới thiệu
C là ngôn ngữ lập trình cấp cao, đƣợc sử dụng rất phổ biến để lập trình hệ thống
cùng với Assembler và phát triển các ứng dụng.
Bài này sẽ trình bày lịch sử hình thành và phát triển của ngôn ngữ C++, cấu trúc
của một chƣơng trình C++, cài đặt và sử dụng chƣơng trình C++
Mục tiêu
- Mô tả đƣợc lịch sử hình thành và phát triển của ngôn ngữ C++
- Trình bày đƣợc cấu trúc của một chƣơng trình C++
- Cài đặt và sử dụng chƣơng trình C++
Nội dung chính
I. LỊCH SỬ HÌNH THÀNH
C là ngôn ngữ lập trình cấp cao, đƣợc sử dụng rất phổ biến để lập trình hệ thống
cùng với Assembler và phát triển các ứng dụng.
Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie
(làm việc tại phòng thí nghiệm Bell) đã phát triển ngôn ngữ lập trình C dựa trên ngôn
ngữ BCPL (do Martin Richards đƣa ra vào năm 1967) và ngôn ngữ B (do Ken
Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 khi viết hệ điều hành UNIX
đầu tiên trên máy PDP-7) và đƣợc cài đặt lần đầu tiên trên hệ điều hành UNIX của
máy DEC PDP-11.
Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển “Ngôn
ngữ lập trình C” và đƣợc phổ biến rộng rãi đến nay. Lúc ban đầu, C đƣợc thiết kế
nhằm lập trình trong môi trƣờng của hệ điều hành Unix nhằm mục đích hỗ trợ cho các
công việc lập trình phức tạp. Nhƣng về sau, với những nhu cầu phát triển ngày một
tăng của công việc lập trình, C đã vƣợt qua khuôn khổ của phòng thí nghiệm Bell và
nhanh chóng hội nhập vào thế giới lập trình để rồi các công ty lập trình sử dụng một
cách rộng rãi. Sau đó, các công ty sản xuất phần mềm lần lƣợt đƣa ra các phiên bản
hỗ trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng đƣợc khai sinh từ
đó.
II. ĐẶC ĐIỂM
Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và rất “mềm
dẻo”, có một thƣ viện gồm rất nhiều các hàm (function) đã đƣợc tạo sẵn. Ngƣời lập
trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo
mới. Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải
quyết các bài toán kỹ thuật có nhiều công thức phức tạp. Ngoài ra, C cũng cho phép
17
- ngƣời lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tƣợng khác. Tuy nhiên, điều
mà ngƣời mới vừa học lập trình C thƣờng gặp “rắc rối” là “hơi khó hiểu” do sự “mềm
dẻo” của C. Dù vậy, C đƣợc phổ biến khá rộng rãi và đã trở thành một công cụ lập
trình khá mạnh, đƣợc sử dụng nhƣ là một ngôn ngữ lập trình chủ yếu trong việc xây
dựng những phần mềm hiện nay.
Ngôn ngữ C có những đặc điểm cơ bản sau:
* Tính cô đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử chuẩn,
nhƣng hầu hết đều đƣợc biểu diễn bằng những chuỗi ký tự ngắn gọn.
* Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập trình
nhƣ cấu trúc lựa chọn, lặp… Từ đó các chƣơng trình viết bằng C đƣợc tổ chức rõ
ràng, dễ hiểu.
* Tính tƣơng thích (compatible): C có bộ tiền xử lý và một thƣ viện chuẩn
vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các chƣơng
trình viết bằng C vẫn hoàn toàn tƣơng thích.
* Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp,
chấp nhận nhiều cách thể hiện, có thể thu gọn kích thƣớc của các mã lệnh làm chƣơng
trình chạy nhanh hơn.
* Biên dịch (compile): C cho phép biên dịch nhiều tập tin chƣơng trình riêng
rẽ thành các tập tin đối tƣợng (object) và liên kết (link) các đối tƣợng đó lại với nhau
thành một chƣơng trình có thể thực thi đƣợc (executable) thống nhất.
III. CẤU TRÚC MỘT CHƢƠNG TRÌNH C++
Chƣơng trình C++ là một chƣơng trình tập hợp nhiều hàm trong đó phải có một
hàm chính là main().
Hàm là đoạn mã lệnh độc lập đƣợc đặt tên và thực hiện một công việc xác định
khi đƣợc gọi đến. Một hàm có thể gọi đến nhiều hàm khác.
Hàm main() là hàm đƣợc máy tính gọi đến trƣớc tiên khi thực hiện chƣơng trình
Một chƣơng trình c++ thƣờng có cấu trúc nhƣ sau:
/* Các chỉ thị tiền xử lý */
#include ....
#define ...
typedef .... /* định nghĩa các kiểu dữ liệu */
/* khai báo nguyên mẫu các hàm */
Kiểu_dữ_liệu tên_hàm(tham_số);
khai báo các biến toàn cục;
/* chƣơng trình chính */
18
- main()
{ ........ /* các câu lệnh*/
return 0;
}
/* khai báo các hàm*/
Kiểu_dữ_liệu tên_hàm(tham_số);
{ ........ /* các câu lệnh*/
return (giá trị trả về);
}
IV. MỘT SỐ VÍ DỤ MẪU
Ví dụ : Xuất " Chao cac ban"
#include // chỉ thị tiền xử lý
void main() // hàm main()
{
printf(“\nChao cac ban !”); // câu lệnh
}
Ví dụ : tính diện tích hình chữ nhật biết chiều dài và chiều rộng
#include
#include
main()
{
int x,y,dt; // khai báo biến
printf(“\nNhap chieu dai:”);scanf(“%d”,&x); // hàm đọc từ bàn phím
printf(“\nNhap chieu rong:”);scanf(“%d”,&y);
dt=x*y
printf(“\nDien tich hinh chu nhat: %d”,dt); // hàm in ra màn hình
getch(); // đọc một ký tự để chờ
return 0;
}
19
nguon tai.lieu . vn