bài giảng ngôn ngữ lập trình bậc cao c++ - pgs.ts nguyễn hữu công - Pdf 16

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
BỘ MÔN KỸ THUẬT PHẦN MỀM
BÀI GIẢNG MÔN HỌC
NGÔN NGỮ LẬP TRÌNH BẬC CAO
Theo chương trình 150 TC
Số tín chỉ: 03
(Lưu hành nội bộ)
THÁI NGUYÊN 2010
2
BỘ MÔN KỸ THUẬT PHẦN MỀM
BÀI GIẢNG MÔN HỌC
NGÔN NGỮ LẬP TRÌNH BẬC CAO
Theo chương trình 150 TC
Số tín chỉ: 03
(Lưu hành nội bộ)
Thái Nguyên, ngày….…tháng 12 năm 2010
TRƯỞNG BỘ MÔN TRƯỞNG KHOA ĐIỆN TỬ
Ths. Nguyễn Thị Hương PGS. TS Nguyễn Hữu Công
MỤC LỤC
ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN 4
CHƯƠNG 1. GIỚI THIỆU NGÔN NGỮ C++ 11
CHƯƠNG 2. THÀNH PHẦN CƠ BẢN, KIỂU DỮ LIỆU CƠ SỞ VÀ PHÉP TOÁN 17
A. Phần lý thuyết 17
B. Phần thảo luận, bài tập 41
CHƯƠNG 3. CÁC THAO TÁC XỬ LÝ INPUT/OUTPUT 42
A. Phần lý thuyết 42
B. Phần thảo luận, bài tập 54
CHƯƠNG 4. CÁC CẤU TRÚC ĐIỀU KHIỂN 55
A. Phần lý thuyết 55
B. Phần thảo luận, bài tập 65

5. Các học phần học trước: Toán cao cấp
6. Học phần thay thế, học phần tương đương: Không
7. Mục tiêu của học phần:
Trang bị cho sinh viên kiến thức nâng cao trong lĩnh vực tin học, cụ thể: giúp
cho sinh viên nắm chắc được quy trình xây dựng chương trình để giải quyết một bài
toán cụ thể, đặc biệt là trong lĩnh vực kỹ thuật. Từ khâu đặt vấn đề của bài toán,
phân tích yêu cầu của bài toán, xây dựng thuật toán, mã hóa chương trình trên ngôn
ngữ bậc cao (C++), kiểm thử và khai thác sử dụng.
8. Mô tả vắn tắt nội dung học phần:
Môn học cung cấp các kiến thức chi tiết về ngôn ngữ lập trình C++ nhằm
giải quyết các bài toán kỹ thuật. Cụ thể:
- Các thành phần của ngôn ngữ.
- Cấu trúc của một chương trình C++.
- Biến và các kiểu dữ liệu đơn giản trong C++.
4
- Biểu thức, câu lệnh và các phép toán.
- Câu lệnh đơn giản và câu lệnh có cấu trúc.
- Hàm, đệ quy và truyền tham số.
- Các kiểu dữ liệu có cấu trúc: mảng, xâu, cấu trúc, file.
9. Nhiệm vụ của sinh viên:
- Dự lớp ≥ 80 % tổng số thời lượng của học phần.
- Làm bài tập ở nhà.
- Chuẩn bị thảo luận
10.Tài liệu học tập:
- Sách, giáo trình chính:
[1]. Tống Đình Quỳ, Ngôn ngữ lập trình C++, NXB Thống kê 2000.
[2]. Tống Đình Quỳ, Bài tập ngôn ngữ lập trình C++, NXB Thống kê
2000.
- Tài liệu tham khảo:
[3]. Quách Tuấn Ngọc, Ngôn ngữ lập trình C, NXB Giáo Dục, 1998.

2.1.1. Bộ ký tự
2.1.2. Tên
2.1.3. Từ khoá
2.1.4. Lời giải thích
2.1.5. Cấu trúc của một chương trình C++ và quy tắc viết chương trình
2.2. Các kiểu dữ liệu và cách khai báo
2.2.1. Kiểu dữ liệu cơ sở
2.2.1.1. Kiểu số nguyên
2.2.1.2. Kiểu số thực
2.2.1.3. Kiểu ký tự
2.2.2. Sự tương thích giữa các kiểu
2.2.3. Định nghĩa và khai báo hằng
2.2.4. Các biến tham chiếu
2.2.5. Biến con trỏ
2.3. Biểu thức, câu lệnh và các phép toán
2.3.1. Biểu thức và các phép toán
2.3.2. Thứ tự thực hiện các phép toán
2.3.3. Câu lệnh
2.3.4. Lệnh hợp thành
2.3.5. Một số hàm số học
CHƯƠNG 3. CÁC THAO TÁC XỬ LÝ INPUT/OUTPUT
(Tổng số tiết 6; Lý thuyết 3; Thảo luận 2 Thực hành 1)
3.1. Hàm in ra màn hình printf()
3.2. Hàm đọc ký tự từ bàn phím scanf()
3.3. Thực hiện Input/Output với dòng tin trong C++
6
3.3.1. Input
3.3.2. Output
3.4. Thiết lập khuôn dạng - trình bày màn hình
CHƯƠNG 4. CÁC CẤU TRÚC ĐIỀU KHIỂN

Tuần
thứ
Nội dung
Tài liệu học
tập, tham khảo
Hình thức
học
1
CHƯƠNG 1. GIỚI THIỆU NGÔN NGỮ C++
1.1. Lịch sử ngôn ngữ C và C++
1.2. Cài đặt C++
1.3. Môi trường Borland C++
1.4. Thiết lập cấu hình cho môi trường
CHƯƠNG 2. CÁC THÀNH PHẦN CƠ BẢN,
CÁC KIỂU DỮ LIỆU CƠ SỞ VÀ CÁC PHÉP
TOÁN
2.1. Các thành phần cơ bản
2.1.1. Bộ ký tự
2.1.2. Tên
2.1.3. Từ khoá
2.1.4. Lời giải thích
2.1.5. Cấu trúc của một chương trình
C++ và quy tắc viết chương trình
2.2. Các kiểu dữ liệu và cách khai báo
2.2.1. Kiểu dữ liệu cơ sở
2.2.1.1. Kiểu số nguyên
2.2.1.2. Kiểu số thực
2.2.1.3. Kiểu ký tự
2.2.2. Sự tương thích giữa các kiểu
2.2.3. Định nghĩa và khai báo hằng

4
4.4. Cấu trúc while
4.5. Cấu trúc do
4.6. Câu lệnh break
4.7. Câu lệnh continue
[1] - [8] Giảng
5
CHƯƠNG 5. HÀM TRONG C++
5.1. Hàm trong C++
5.2. Truyền tham số cho hàm
5.3. Đệ quy
5.4. Hàm inline
[1] - [8] Thảo luận
6
Thảo luận và làm các bài tập từ chương 1
đến chương 4
[1] - [8] Thảo luận
7 Kiểm tra giữa kỳ
8
CHƯƠNG 6. CÁC KIỂU DỮ LIỆU CÓ CẤU
TRÚC
6.1. Mảng dữ liệu
6.1.1. Mảng một chiều
6.1.2. Mảng nhiều chiều
[1] - [8] Giảng
9
6.2. Xâu ký tự và các hàm xử lý xâu
6.3. Cấu trúc (structure)
[1] - [8] Giảng
10

Telephone để dùng trong hệ điều hành UNIX; theo Ritchie thì thời gian sáng tạo
nhất là vào năm 1972. Nó được đặt tên là C vì nhiều đặc tính của nó rút ra từ một
ngôn ngữ trước đó là B. Từ dó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành
khác và trở thành một những ngôn ngữ phổ dụng nhất. C là ngôn ngữ rất có hiệu
quả và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được
dùng cho việc viết các ứng dụng. Ngoài ra, C cũng thường được dùng làm phương
tiện giảng dạy trong khoa học máy tính mặc dù ngôn ngữ này không dược thiết kế
dành cho người nhập môn.
C++ là gì? Có thể thấy rằng ngôn ngữ lập trình C được phát triển đầu tiên sau đó
C++ mới được phát triển. Vậy C++ nó là cái gì? Nó có mối quan hệ thế nào với C.
Câu trả lời là: C++ cơ bản là C ở một mức độ mới. Sự khác biệt quan trọng duy
nhất là C++ hỗ trợ hướng đối tượng. Các đoạn mã viết bằng C được dịch và chạy tốt
với hầu hết các chương trình dịch của C++ nhưng điều ngược lại không đúng. C++
hỗ trợ tất cả các lệnh của C và có mở rộng.
Lịch sử ngôn ngữ lập trình C++: Bjarne Stroustrup của Bell Labs đã phát triển
C++ (mà tên nguyên thủy là "C với các lớp" trong suốt thập niên 1980 như là một
bản nâng cao của ngôn ngữ C. Những bổ sung nâng cao bắt đầu với sự thêm vào
của khái niệm lớp, tiếp theo đó là các khái niệm hàm ảo, toán tử quá tải, đa kế thừa,
tiêu bản, và xử lý ngoại lệ. Tiêu chuẩn của ngôn ngữ C++ đã được thông qua trong
năm 1998 như là ISO/IEC 14882: 1998. Phiên bản hiện đang lưu hành là phiên bản
2003, ISO/IEC 14882: 2003.
Năm 1983, thì tên C với các lớp được đổi thành C++. các chức năng mới được
thêm vào bao gồm hàm ảo, quá tải hàm và toán tử, tham chiếu, hằng, khả năng kiểm
soát bộ nhớ của lưu trữ tự do, nâng cao việc kiểm soát kiểu, và lệnh chú giải kiểu
(//).
Năm 1989 phiên bản C++ 2.0 phát hành. Các tính năng mới bao gồm đa kế thừa,
lớp trừu tượng, hàm tĩnh, hàm thành viên hằng, và thành viên bảo tồn.
11
Phiên bản xuất bản sau đó có thêm các chức năng tiêu bản, ngoại lệ, không gian
tên, chuyển kiểu cho toán tử new, và kiểu Boolean.

Bước 8: Chọn nút Continue
15
Bước 9: Sau khi chọn nút OK ta đã cài xong chương trình Borland C++ 4.5.
Giao diện chương trình Borland C++ 4.5
16
CHƯƠNG 2. THÀNH PHẦN CƠ
BẢN, KIỂU DỮ LIỆU CƠ SỞ VÀ PHÉP TOÁN
A. Phần lý thuyết
2.1. Các thành phần cơ bản
2.1.1. Bộ ký tự (Character Set)
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ừ. Các từ lại được liên kết
với nhau theo một qui tắc nào đó để tạo nên các câu lệnh. Một chương trình bao
gồm nhiều câu lệnh và thể hiện một thuật toán để giải một bài toán nào đó. 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ữ VIET NAM có 8 ký tự, còn
VIETNAM chỉ có 7 ký tự.
Chú ý: Khi viết chương trình, ta không được sử dụng bất kỳ ký tự nào khác ngoài
các ký tự trên.
Ví dụ như khi lập chương trình giải phương trình bậc hai ax
2
+bx+c=0, ta cần
tính biệt thức Delta ∆= b
2

do double else enum
extern far float for
goto huge if int
interrupt long near pascal
register return short signed
sizeof static struct switch
tipedef union unsigned void
volatile while
Chú ý:
- Không được dùng các từ khoá để đặt tên cho các hằng, biến, mảng, hàm
- Từ khoá phải được viết bằng chữ thường, ví dụ: viết từ khoá khai báo kiểu
nguyên là int chứ không phải là int.
18
2.1.4. Lời giải thích (Comments)
Các chú thích được các lập trình viên sử dụng để ghi chú hay mô tả trong các
phần của chương trình. Trong C++ có hai cách để chú thích:
//Chú thích theo dòng
/*Chú thích theo khối
Dòng chú thích 1
Dòng chú thích 2
*/
Chú thích theo dòng bắt đầu từ cặp dấu xổ (//) cho đến cuối dòng. Chú thích theo
khối bắt đầu bằng /*và kết thúc bằng */ và có thể bao gồm nhiều dòng. Chúng ta sẽ
thêm các chú thích cho chương trình:
Ví dụ 2.
//Ví dụ về ghi chú trong C++
#include <iostream.h>
void main(){
//In ra màn hình dòng Hello World!
cout<<"Hello World! ";

int main()
Dòng này tương ứng với phần bắt đầu khai báo hàm main. Hàm main là điểm mà
tất cả các chương trình C++ bắt đầu thực hiện. Nó không phụ thuộc vào vị trí của
hàm này (ở đầu, cuối hay ở giữa của mã nguồn) mà nội dung của nó luôn được thực
hiện đầu tiên khi chương trình bắt đầu. Thêm vào đó, do nguyên nhân nói trên, mọi
chương trình C++ đều phải tồn tại một hàm main.
Theo sau main là một cặp ngoặc đơn bởi vì nó là một hàm. Trong C++, tất cả các
hàm mà sau đó là một cặp ngoặc đơn () thì có nghĩa là nó có thể có hoặc không có
tham số (không bắt buộc). Nội dung của hàm main tiếp ngay sau phần khai báo
chính thức được bao trong các ngoặc nhọn ({ }) như trong ví dụ của chúng ta.
cout<<"Hello World";
Dòng lệnh này làm việc quan trọng nhất của chương trình. cout là một dòng
(stream) output chuẩn trong C++ được định nghĩa trong thư viện iostream và những
gì mà dòng lệnh này làm là gửi chuỗi kí tự "Hello World" ra màn hình.
Chú ý rằng dòng này kết thúc bằng dấu chấm phẩy (;). Kí tự này được dùng để
kết thúc một lệnh và bắt buộc phải có sau mỗi lệnh trong chương trình C++ của bạn
(một trong những lỗi phổ biến nhất của những lập trình viên C++ là quên mất dấu
chấm phẩy).
return 0;
Lệnh return kết thúc hàm main và trả về mã đi sau nó, trong trường hợp này là 0.
Đây là một kết thúc bình thường của một chương trình không có một lỗi nào trong
quá trình thực hiện. Như bạn sẽ thấy trong các ví dụ tiếp theo, đây là một cách phổ
biến nhất để kết thúc một chương trình C++.
20
Chương trình được cấu trúc thành những dòng khác nhau để nó trở nên dễ đọc
hơn nhưng hoàn toàn không phải bắt buộc phải làm vậy. Ví dụ, thay vì viết
int main()
{
cout<<" Hello World ";
return 0;

int -32768 đến 32767 2 byte
long -2147483648 đến 2147483647 4 byte
unsigned long 0 đến 4294967295 4 byte
Chú ý: Kiểu ký tự cũng có thể xem là một dạng của kiểu nguyên.
 Kiểu số thực
Trong C++ cho phép sử dụng ba loại dữ liệu dấu phảy động, đó là float, double
và long double. Kích cỡ và phạm vi biểu diễn của chúng được chỉ ra trong bảng
dưới đây:
Kiểu Phạm vi biểu diễn
Số chữ số
có nghĩa
Kích thước
float 3.4E-38 đến 3.4E+38 7 đến 8 4 byte
double 1.7E-308 đến 1.7E+308 15 đến 16 8 byte
long double
3.4E-4932 đến
1.1E4932
17 đến 18 10 byte
Giải thích: Máy tính có thể lưu trữ được các số kiểu float có giá trị tuyệt đối từ
3.4E-38 đến 3.4E+38. Các số có giá trị tuyệt đối nhỏ hơn3.4E-38 được xem bằng 0.
Phạm vi biểu diễn của số double được hiểu theo nghĩa tương tự.
 Kiểu ký tự
Một giá trị kiểu char chiếm 1 byte (8 bit) và biểu diễn được một ký tự thông qua
bảng mã ASCII.
22
Ví dụ 2.
Ký tự Mã ASCII
0 048
1 049
2 050

2.2.3. Sự tương thích giữa các kiểu
Việc chuyển đổi một kiểu đã xác định thành một kiểu khác về cơ bản sẽ thay đổi
một hay cả hai tính chất của kiểu nhưng không làm thay đổi hình mẫu bit nền tảng.
Kích cỡ kiểu có thể rộng hơn hay hẹp hơn và tất nhiên cách hiểu về kiểu sẽ thay
đổi. Một số phép chuyển đổi là không an toàn, về cơ bản trình biên dịch sẽ cảnh báo
điều đó, việc chuyển đổi từ kiểu dữ liệu rộng hơn sang một kiểu dữ liệu hẹp hơn là
một hình thái chuyển đổi kiểu không an toàn.
2.2.4. Định nghĩa và khai báo hằng
a) Định nghĩa và khai báo hằng
Định nghĩa hằng:
Bạn có thể định nghĩa các hằng với tên mà bạn muốn để có thể sử dụng thường
xuyên mà không mất tài nguyên cho các biến bằng cách sử dụng chỉ thị #define.
Đây là dạng của nó:
#define <tên hằng> [giá trị]
Ví dụ 2.
#define PI 3.14159265
#define NEWLINE '\n'
#define WIDTH 100
Chúng định nghĩa ba hằng số mới. Sau khi khai báo bạn có thể sử dụng chúng
như bất kì các hằng số nào khác, ví dụ:
circle = 2 * PI * r;
cout<<NEWLINE;
Trong thực tế việc duy nhất mà trình dịch làm khi nó tìm thấy một chỉ thị #define
là thay thế các tên hằng tại bất kì chỗ nào chúng xuất hiện (như trong ví dụ trước,
PI, NEWLINE hay WIDTH) bằng giá trị mà chúng được định nghĩa.
Chỉ thị #define không phải là một lệnh thực thi, nó là chỉ thị tiền xử lý
(preprocessor), đó là lý do trình dịch coi cả dòng là một chỉ thị và dòng đó không
cần kết thúc bằng dấu chấm phẩy. Nếu bạn thêm dấu chấm phẩy vào cuối dòng, nó
sẽ được coi là một phần của giá trị định nghĩa hằng.
Khai báo các hằng (const):

Hằng ký tự còn có thể được viết theo cách sau: '\c1c2c3', trong đó c1c2c3 là một
số hệ 8 mà giá trị của nó bằng mã ASCII của ký tự cần biểu diễn.
Ví dụ: chữ a có mã hệ 10 là 97, đổi ra hệ 8 là 0141. Vậy hằng ký tự 'a' có thể viết
dưới dạng '\141'. Đối với một vài hằng ký tự đặc biệt ta cần sử dụng cách viết sau
(thêm dấu \):
25


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status