1. Trang chủ
  2. » LUYỆN THI QUỐC GIA PEN-C

Bài giảng Giới thiệu lập trình: Giới thiệu lập trình C ++ - TS. Lê Nguyên Khôi

20 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Tìm hiểu sự phát triển các ngôn ngữ lập trình Mượn sách thư viện. Tìm hiểu codepower.vn Tìm hiểu CodeBlocks[r]

(1)

Giới Thiệu Lập Trình Giới Thiệu TS Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN

N

i Dung

1

Khái niệm chương trình lập trình Cấu trúc chương trình

Biên soạn, biên dịch chương trình Chạy chương trình

Sửa gỡlỗi chương trình Mơi trường lập trình

Giới Thiệu Lập Trình

Ch

ươ

ng Trình

2

Một dãy lệnh (instruction) cho máy tính Máy tính tự vận hành

Cần mệnh lệnhđể hoạt động

Máy tính chạy lệnh chương trình xử lý trung tâm (CPU)

Chương trình chạy sai Khơng phải lỗi máy tính

Do lệnh hướng dẫn máy tính sai

Lập trình viên tìm sửa lỗi

Giới Thiệu Lập Trình

L

p Trình

3

Quá trình tạo chương trình giải vấn đề cụ thể máy tính, bao gồm:

Phân tích vấnđề Xây dựng giải pháp

Đánh giá giải pháp

Càiđặt giải pháp

Kiểm thử Gỡlỗi

Tốiưu

Giới Thiệu Lập Trình

Tại Sao Cần Lập Trình

4

Điều khiển máy tính

Giải nhiều vấnđềhiệnđại Trải nghiệm sáng tạo thú vị Khai phá tiềm trí tuệ

Giới Thiệu Lập Trình

Đánh Giá Chương Trình

5 Tínhđúngđắn (correctness)

Kết quảtươngứng với thơng tin đầu vào

Tính chịu lỗi (robustness) Xửlý: lỗi chạy, thông tin đầu vào sai

Tính dễdùng (usability) Người dùng dễdàng sửdụng

Tính khảchuyển (portatbility) Thích nghi mơi trường khác

Tính bảo trì (maintainability) Dễdàng sửađổi, nâng cấp

Tính hiệu quả(efficiency)

Độtin cậy, tốcđộxửlý, tài nguyên sửdụng, rủi ro

(2)

Cài Đ

t Gi

i Pháp

6

Sau xây dựng giải pháp, đánh giá giải pháp, lập trình viên tiến hành giảiđặt giải pháp (viết chương trình)

Sửdụng ngôn ngữ:

Ngôn ngữmáy: trực tiếpđiều khiển bộvi xửlý

Ngôn ngữtựnhiên: máy không hiểu

Ngôn ngữbậc cao: C, C++, Java, C#, Python

Có thểchuyển thành ngơn ngữmáy Sửdụng cơng cụ, chương trình dịch

Gần với ngôn ngữtựnhiên Dễ đọc, dễhiểu, dễtraođổi

Giới Thiệu Lập Trình

Trình T

Xây D

ng Ch

ươ

ng Trình

7

Soạn thảo Biên dịch

Chạy chương trình Kiểm thử

Gỡlỗi

Giới Thiệu Lập Trình

Ch

ươ

ng Trình Trong Ngơn Ng

C++

8

Tải càiđặtMinGW32

Biên soạn chương trình sửdụngNotepad

Lưu chương trình vào với phần mởrộng.cpp Mởchương trìnhCommand Prompt, truy cập

đến thưmụcđã lưu tệp

Biên dịch chương trình sửdụngg++được tệp có phần mởrộng.exe(chương trình)

Chạy chương trình với bộdữliệu khác nhauđểphát lỗi

Giới Thiệu Lập Trình

Ch

ươ

ng Trình Đ

u Tiên

9

Yêu cầu máy tính in dòng “Hello, World !!!”

#include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; return 0;

}

Giới Thiệu Lập Trình

Chương Trình Đầu Tiên

Yêu cầu máy tính in dịng “Hello, World !!!”

#include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; return 0;

}

điểm bắtđầu chương trình bắtđầu

kết thúc

Chương Trình Đầu Tiên

u cầu máy tính in dòng “Hello, World !!!”

#include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; return 0;

}

tải thưviện

(3)

Ch

ươ

ng Trình Đ

u Tiên

12

u cầu máy tính in dịng “Hello, World !!!”

#include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; return 0;

}

mệnh lệnh in

ra hình xuống dịng

In tất cảgiữa dấu nháy kép “”

Giới Thiệu Lập Trình

Ch

ươ

ng Trình Đ

u Tiên

13

u cầu máy tính in dòng “Hello, World !!!”

#include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; return 0;

}

Thông báo với hệ điều hành khơng có lỗi xảy Giá trịkhác0, xảy lỗi trình chạy

Giới Thiệu Lập Trình

Ch

ươ

ng Trình Đ

u Tiên

14

u cầu máy tính in dịng “Hello, World !!!” sauđó dịng “I am a computer”

#include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; return 0;

}

Giới Thiệu Lập Trình

Ch

ươ

ng Trình Đ

u Tiên

15

In nhiều dòng liên tục #include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; cout << "I am a computer" << endl; return 0;

}

Giới Thiệu Lập Trình

Chương Trình Đầu Tiên

16

In nhiều dòng liên tục #include <iostream> using namespace std; int main()

{

cout << "Hello, World !!!" << endl; cout << "I am a computer" << endl; return 0;

}

khơng có dấu chấm phẩy

Giới Thiệu Lập Trình

Chương Trình Tổng & Hiệu Số

Nguyên

17

Tính tổng & hiệu số nguyên ab

Xây dựng giải pháp: Nhập số nguyên ab

2 Tính tổng & hiệu củaab

3 Lưu giá trị tổng & hiệu sau tính In tổng & hiệu

Kiểm tra giải pháp với cặp sốkhác

(4)

T

ng & Hi

u S

Nguyên Trong C++

18 /* chương trình C++ tính tng & hiu s ngun */

#include <iostream> using namespace std; int main()

{

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng

hieu = soThu1 – soThu2; // tính hiu

cout << "tong: " << tong << endl; // in kết qu

cout << "hieu: " << hieu << endl; // in kết qu

return 0; }

Giới Thiệu Lập Trình

T

ng & Hi

u S

Nguyên Trong C++

chú thích cho lập trình viên

19 /* chương trình C++ tính tng & hiu s nguyên */ #include <iostream>

using namespace std; int main()

{

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng hieu = soThu1 – soThu2; // tính hiu cout << "tong: " << tong << endl; // in kết qucout << "hieu: " << hieu << endl; // in kết qureturn 0;

}

Giới Thiệu Lập Trình

Tổng & Hiệu Số

Nguyên Trong C++

một phần ngôn ngữC++ (từkhóa)

20 /* chương trình C++ tính tng & hiu s nguyên */ #include <iostream>

using namespace std;

int main() {

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng hieu = soThu1 – soThu2; // tính hiu

cout << "tong: " << tong << endl; // in kết qucout << "hieu: " << hieu << endl; // in kết qureturn 0;

}

Giới Thiệu Lập Trình

Tổng & Hiệu Số

Nguyên Trong C++

toán tử

21 /* chương trình C++ tính tng & hiu s nguyên */ #include <iostream>

using namespace std; int main()

{

int soThu1, soThu2; // khai báo cin >> soThu1; // nhp d liu cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 +soThu2; // tính tng hieu = soThu1 –soThu2; // tính hiu cout << "tong: " <<tong <<endl; // in kết qu

cout << "hieu: " <<hieu <<endl; // in kết qu

return 0; }

Giới Thiệu Lập Trình

T

ng & Hi

u S

Nguyên Trong C++

thực mệnh lệnh, kết thúc dấu ;

/* chương trình C++ tính tng & hiu s nguyên */ #include <iostream>

using namespace std;

int main() {

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng

hieu = soThu1 – soThu2; // tính hiu

cout << "tong: " << tong << endl; // in kết qucout << "hieu: " << hieu << endl; // in kết qureturn 0;

}

T

ng & Hi

u S

Nguyên Trong C++

khối câu lệnh, phân tách ngoặc cong {}

/* chương trình C++ tính tng & hiu s nguyên */ #include <iostream>

using namespace std; int main()

{

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng

hieu = soThu1 – soThu2; // tính hiu

cout << "tong: " << tong << endl; // in kết qucout << "hieu: " << hieu << endl; // in kết qureturn 0;

(5)

T

ng & Hi

u S

Nguyên Trong C++

nhóm câu lệnh đặt tên đểthực nhiệm vụ

24 /* chương trình C++ tính tng & hiu s nguyên */ #include <iostream>

using namespace std;

int main() {

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng

hieu = soThu1 – soThu2; // tính hiu

cout << "tong: " << tong << endl; // in kết qucout << "hieu: " << hieu << endl; // in kết qureturn 0;

}

Giới Thiệu Lập Trình

T

ng & Hi

u S

Nguyên Trong C++

phong cách viết chương trình, người khác đọc hiểu

25 /* chương trình C++ tính tng & hiu s nguyên */

#include <iostream> using namespace std; int main()

{

int soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp dliu

int tong, hieu; // khai báo

tong = soThu1 + soThu2; // tính tng

hieu = soThu1 – soThu2; // tính hiu

cout << "tong: " << tong << endl; // in kết qu

cout << "hieu: " << hieu << endl; // in kết qu

return 0; }

Giới Thiệu Lập Trình

D

ch & Ch

y Ch

ươ

ng Trình

26

Viết chương trình (sửdụngNotepad) lưu vào tệpTongHieu.cpp

MởCommand Prompt(cmd), chuyểnđến thư mục lưu tệpucln.cpp

Dịch chương trình, gõ: g++ TongHieu.cpp, chuyển mã nguồn ngôn ngữbậc cao sang ngôn ngữ máy lưu vàoa.exe

Gõg++ TongHieu.cpp –o TongHieu.exeđểlưu vào tệp với tên mong muốn (TongHieu.exe)

Chạy chương trình, gõTongHieu.exe

Giới Thiệu Lập Trình

Phát Hi

n L

i T

Đ

ng

27

Gõ sai chương trình

Dịch mã nguồn ngôn ngữbậc cao (C++) báo lỗi

TongHieu.cpp:7:5: error: “in” was not declared in this scope in soThu1, soThu2;

^

/* chương trình C++ tính tng & hiu s nguyên */

#include <iostream> using namespace std; int main()

{

in soThu1, soThu2; // khai báo

cin >> soThu1; // nhp d liu

cin >> soThu2; // nhp d liu

………

Giới Thiệu Lập Trình

Kiểm Tra Chương Trình

28

Kiểm tra kết quảchương trình Dữliệu: 10

Kết quả: Tong: 13 Hieu: -7

Luôn kiểm tra chương trình với bộdữ liệuđược lựa chọn cẩn thậnđểphát lỗi không mong muốn (lỗi chạy) Kiểm tra thường bịqn

Giới Thiệu Lập Trình

Cơng Cụ

Hỗ

Trợ

Lập Trình

29

CodeBlocks

Soạn thảo tệp văn chương trình Ghi vào file cóđi.cpp

Biên dịch: Build > Compile current file

Chạy: Build > Run

(6)

Bài T

p

30

Biên soạn chạy 02 chương trình theo bước nhưtrong slide 26

Tìm hiểu sựphát triển ngơn ngữlập trình Mượn sách thưviện

Tìm hiểucodepower.vn Tìm hiểuCodeBlocks

Slide giảng tải từwebsite mơn học website tậpcodepower.vn

(7)

Giới Thiệu Lập Trình Kiểu DữLiệu CơBản TS Lê Ngun Khơi Trường Đại học Công nghệ, ĐHQGHN

N

i Dung

1

Kiểu dữliệu cơbản

Phép toán Biến số

Hằng số

Hàm sốtoán học

Giới Thiệu Lập Trình

Nh

c L

i: UCLN Trong C++

2 Giới Thiệu Lập Trình

Kiểm tra sửdụng bộdữliệu (5, 15); (33, 110) 1 #include <iostream>

2

3 int main() 4 {

5 int a, b;

6 std::cin >> a; std::cin >> b; 7 while (a != b)

8 {

9 if (a > b) a = a – b; 10 else b = b – a; 11 }

12 std::cout << "UCLN: " << a << std::endl; 13 return 0;

14 }

Sửdụng cặp sốnguyên âm, không in kết

Mệnh lệnhcout <<(dịng 12) khơng thực

Chương trình (dịng 7-11) có sai hay khơng?

Nh

c L

i: UCLN Trong C++

3

7 while (a != b) 8 {

9 if (a > b) a = a – b; 10 else b = b – a; 11 }

12 std::cout << "UCLN: " << a << std::endl; 13 return 0;

14 }

Giới Thiệu Lập Trình

Nh

c L

i: UCLN Trong C++

4

Chương trình không sai

Điều kiện trước (precondition) chạy ch.tr sốnguyên dương (>0)

Điều kiện sau (postcondition) chạy ch.tr ch.tr kết thúc in ucln củaab

Có thểsửa ch.tr đểtínhđược ucln số nguyên âm

Cũng đặtđiều kiện trước tính, điều kiện trước sai, khơng tính in thơng báo

Giới Thiệu Lập Trình

Ki

u S

Nguyên Trong C++

5

Khi sửdụng kiểu dữliệu, ví dụint, cần biết miền giá trịbiểu diễnđược

Kiểu dữliệuintbiểu diễn sốnguyên từ -2.147.483.648 đến +2.147.483.647

Cóảnh hưởng khơng?

(8)

Tên L

a Đ

y Ariane 5

6

Cơquan Vũtrụchâu Âu phóng tên lửađẩy ngày 04/06/1996, trịgiá tỷ la Mỹ

Ariane dùng lại mã hệthốngđiều khiển đẩy Ariane

TốcđộA5 lớn A4, thiết kế không kiểm tra miền dữliệu biểu diễn

Khi A5 đạt tới tốcđộnhấtđịnh, xảy lỗi tràn bộnhớ, bộxửlý tắt

A5 bịmấtđiều khiển, sauđó gây nổ

Giới Thiệu Lập Trình

H

Th

ng S

7 Sốnguyên dương

Sốnguyên âm: sửdụng bit trái ngồi cùngđểbiểu diễn

Giới Thiệu Lập Trình Cơs10 (3 chs)

= ∗ + ∗ + ( ∗ )

Cơs2 (3 chs)

= ∗ + ∗ + ( ∗ )

= ∗ − + ∗ + ( ∗ ) = −

= ∗ − + ∗ + ( ∗ ) = −

Ki

u S

Nguyên

char

8

Trong C++ kiểu dữliệucharlà kiểu nhỏnhất

Sửdụng byte bộnhớ

byte máy tính gồm bit

Nhưvậy, khoảng biểu diễn từ-128đến +127

10000000= −128và 01111111= 127

Khoảng biểu diễn từ−2đến+2− 1

Giới Thiệu Lập Trình

−2 2 2 2 2 2 2 2

−128 64 32 16

Ki

u C

ơ

B

n Trong C++ - S

Nguyên

9 Kiu ĐộLn Min Giá Tr

char byte -128đến

+127

(−2, +2− 1) short byte -32.768đến

+32.767

(−2, +2− 1)

int byte -2.147.483.648đến

+2.147.483.647

(−2, +2− 1)

Giới Thiệu Lập Trình

Ki

u C

ơ

B

n Trong C++ - S

Th

c

Kiu ĐộLn Min Giá Tr

float byte (−10 , +10 )

double byte (−10 , +10 )

long double

10 byte (−10!, +10!)

Phép Toán S

H

c Trong C++

kiểu toán hạng, xác định phép tốn tươngứng Phép Tốn Tốn TVí DÁp Dng

Cộng

+

a + b1 + 2 1.1 + 2.2

sốnguyên & sốthực

Trừ

-

a - b1 – 2

1.1 – 2.2

sốnguyên & sốthực

Nhân

*

a * b1 * 2

1.1 * 2.2

sốnguyên & sốthực

Chia

/

a / b1 / 2

1.1 / 2.2

(9)

Phép Chia S

H

c Trong C++

12

Chia nguyên: cảhai toán hạng sốnguyên

Chia thực: hai toán hạng sốthực

1 int main() 2 {

3 int i = 1, j = 2, k; 4 double f = 1.0, g = 2.0, h; 5 k = i / j; // chia nguyên k = 0 6 k = j / i; // chia nguyên k = 2 7 h = f / g; // chia thc h = 0.5 8 h = i / g; // chia thc h = 0.5 9 h = f / j; // chia thc h = 0.5 10 return 0;

11 }

Giới Thiệu Lập Trình

Bi

ế

n S

- Đ

c Tính

13

Đểsửdụng hiệu quảkết quảcủa phép toán, cần lưu kết quảsau tính tốn vào biến số

Biến sốdùngđểlưu giá trịthuộc kiểu liệu nhấtđịnh, ví dụ: int, double

Mỗi biến sốcó 03 thuộc tính: tên, kiểu, giá trị

Đểsửdụng biến số, phảiđặt tên hợp lệbằng cách khai báo biến số

Phải khai báo biến sốtrước sửdụng

Nếu khơng trình biên dịch sẽbáo lỗi chưa khai báo

error: … was not declared in this scope Giới Thiệu Lập Trình

Bi

ế

n S

- Khai Báo

14

Cú pháp: kiuDL tênBiến;

Ý nghĩa: tạo biến sốcó tên làtênBiếnđể lưu dữliệu kiểukiểuDL

Ví dụ: int x;

Ý nghĩa : khai báo biến sốnguyênxkiểuint

Chú ý: sau khai báo, biến số có giá trị!

sửdụng mệnh lệnhcout <<in giá trịbiến Lưu ý: sửdụng biến sốmới khai báo

Giới Thiệu Lập Trình

Bi

ế

n S

- Phép Gán

15

Cú pháp: tênBiến = giáTr;

tênBiến = biuThc;

Ý nghĩa: lưugiáTrịhoặc kết quảcủabiểuThức vào biến sốcó tên làtênBiến

Ví dụ: x = 24;

x = (x * 24) / y;

Chú ý: bên trái phép gán (dấu=) giá trị trái (gt-T), bên phải giá trịphải (gt-P)

xcó thểvừa gt-T gt-P phép gán

Giới Thiệu Lập Trình

Bi

ế

n S

- Kh

i T

o (Khai Báo & Gán)

16

Cú pháp: kiuDL tênBiến = giáTr;

kiuDL tênBiến = biuThc; Ý nghĩa: tạo biến sốcó tên làtênBiếnđể

lưu dữliệu kiểukiểuDL, sauđó lưugiáTrịhoặc kết quảcủabiểuThứcvào biến số

Ví dụ: int x = 24;

int x = (x * 24) / y;

Chú ý: phong cách lập trình tốt, chỉkhai báo, biến có giá trịnàođó

int x; int x;

x = x + 1; cout << x; Giới Thiệu Lập Trình

Bi

ế

n S

- Quy T

c Đ

t Tên

17

Tên biến sốdùngđể định danh

Bắtđầu chữcái dấu gạch chân “_

Tiếpđến chữcái, chữsố, dấu gạch chân

Khơng có dấu cách “ “ tên biến số

C++ phân biệt chữhoa chữthường

Tên biến sốkhơngđược trùng với từkhóa C++

Ví dụ: i, k62, X, x, soPT, soThu1, soThu2, tong, hieu

Chú ý: tên biến sốnên gợi nghĩa ngắn gọn

(10)

H

ng S

18

Biến số: giá trịcó thểthayđổi q trình chạy chương trình

Hằng số: giá trịkhơngđược phép thayđổi biến số, thayđổi, dịch báo lỗi

Ví dụ: sốngày tuần, sốnăm tháng, tốcđộánh sáng, sốpi, sốe

Hằng sốphải có giá trịngay khai báo sử dụng từkhóaconst

const double PI = 3.14159; const double SOL = 1.079e+9;

Giới Thiệu Lập Trình

Phép Gán Trong C++

19

Cú pháp: tênBiến = giáTr;

tênBiến = biuThc;

Ví dụ: x = 24;

x = (x * 24) / y;

Thực xácđịnh gt-P phép gán (tính tốn giá trịcủabiểuThức) sauđó gán giá trị cho gt-T phép gán

Chú ý:

gt-T phép gán phải biến số

Kiểu dữliệu gt-P phải giống kiểu dữliệu gt-T

Giới Thiệu Lập Trình

Chuy

n Đ

i Ki

u D

Li

u Trong C++

20

Giá trịthuộc kiểu dữliệu chuyển sang giá trịthuộc kiểu dữliệu khác

Ví dụ: → 1.0hoặc 1.0 →

cách:

Tự động C++

int x = 1.0; double y = 1.0; double y = 1; int x = y; Chủ động lập trình viên

int x = (int)1.0; double y = 1.0; double y = (double)1; int x = (int)y;

Lưu ý: chuyểnđổi kiểu làm thayđổiđộchính xác giá trị Sửdụng cẩn thận

Giới Thiệu Lập Trình

Ki

u C

ơ

B

n Trong C++ - Lơ-gic

21

Các phép tốn so sánh phép tốn lơ-gic trảvềgiá trịkiểu lơ-gic

Giới Thiệu Lập Trình Kiu ĐộLn Min Giá Trbool byte đúnghoặcsai

(true, false)

Phép Toán So Sánh Trong C++

Phép Tốn Tốn TVí DKết qu

Nhỏhơn

<

a < b1 < 2 true

Nhỏhơn

hoặc

<=

a <= b

1 <= 2 true

Lớn

>

a > b1 > 2 false

Lớn

hoặc

>=

a >= b

1 >= 2 false

Bằng

==

a == b1 == 2 false

Không

(khác)

!=

a != b

1 != 2 true

Phép Tốn Lơ-gic Trong C++

Phép Tốn Tốn TVí DKết qu

&&

a && btrue && true true

Hoặc

||

a || bfalse || false false

(11)

B

ng Lơ-gic (Tốn T

L

ườ

i)

24

int a = 0; bool b;

b = (false) && (1/a); cout << b; b = (true) || (1/a); cout << b;

Giới Thiệu Lập Trình a b a && b

false false false false true false true false false

true true true

a b a || b

false false false false true true

true false true

true true true

Đ

ộ Ư

u Tiên Các Phép Tốn

25

Xácđịnh thứtự đểtính giá trịbiểu thức

Sửdụng cặp dấu ngoặc()đểdễ đọc Giới Thiệu Lập Trình

Độ Ưu Tiên Tốn T

Cao ++, , ! *, /, %

+, -<, <=, >, >=

==, != && ||

Thấp =, +=, -=, *=, /=, %=

Hàm S

Toán H

c Trong C++

26

Nhiều hàm sốtốn họcđượcđịnh nghĩa sẵn

Ví dụ: khai (sqrt), sốmũ(pow), trịtuyệt đối (abs)

Đểsửdụng hàm toán học cần tải thư viện tươngứng

#include <cmath> #include <cstdlib>

double x = sqrt(9); // x = 3.0

double y = pow(3, 2); // y = 9.0

int z = rand();

Giới Thiệu Lập Trình

Hàm S

Tốn H

c T

Đ

nh Nghĩa

27

Trong tốn học có thểtự định nghĩa hàm số

, -, = -+ 2- +3-.+ 4.

Từ định nghĩa hàm giá trịcủa biến số, có thểtínhđược giá trịcủa hàm

, - = 2, = = -+ 2- + 3-.+ 4.= 26

Chuyển sang ngơn ngữlập trình, cần có Tên hàm, danh sách biến số

Kiểu dữliệu hàm biến số

Định nghĩa hàm dựa danh sách biến số Sửdụng câu lệnhreturnđểtrảvềgiá trịcủa hàm

sau tính

Giới Thiệu Lập Trình

Hàm T

Đ

nh Nghĩa Trong C++

28 , -, = -+ 2- +3-.+ 4.

Tên hàm: f

Danh sách biến số: a, b

Kiểu dữliệu: int

Định nghĩa hàm:

Sửdụng câu lệnhreturnđểtrảvềgiá trịcủa hàm sau tính

Giới Thiệu Lập Trình int f(int a, int b)

{

return a^3 + 2*a^2*b + 3*a*b^2 + 4*b^3; }

Hàm T

Đ

nh Nghĩa Trong C++

29

Lập trình viên có thểtự định nghĩa hàm hữu ích, phục vụmụcđích cụthểdựa yêu cầu toán

Các hàm tự định nghĩa nằmở: Ngoài trướcint main()

Giới Thiệu Lập Trình 1 #include <iostream> 2

3 int hieu(int a, int b) 4 {

5 return a – b; 6 }

(12)

Hàm T

Đ

nh Nghĩa

30 Giới Thiệu Lập Trình

1 #include <iostream> 2

3 int hieu(int a, int b) { return a – b; } 4

5 int main() 6 {

7 int a, b;

8 std::cin >> a; std::cin >> b; 9 while (a != b)

10 {

11 if (a > b) a = hieu(a, b); 12 else b = hieu(b, a); 13 }

14 std::cout << "UCLN: " << a << std::endl; 15 return 0;

16 }

T

Đ

c

31

Sửdụngcout <<, cin >>, cerr <<

In dữliệuở cácđịnh dạng khác Sửdụng kiểu sốnguyêncharđểquản lý

ký tự(xem bảng mã ASCII)

Sốnguyên hệcơsốkhác (8, 16)

Các toán tửgán phức hợp+=, -=, *=, /=, %=

Các toán tửtăng/giảm mộtđơn vị++,

Các hàm toán học trongcmath, cstdlib

Tự định nghĩa sốhàmđơn giản Giới Thiệu Lập Trình

Tham Kh

o

32

Làm quen với CodeBlock chức hỗ biên soạn CodeBlock

Làm tập trêncodehub.now-ip.org

Đọc sách:

Chương 2, Lập Trình CơBản C++

(13)

Giới Thiệu Lập Trình Cấu Trúc Lựa Chọn TS Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN

N

i Dung

1

Biểu thức lô-gic

Luồngđiều khiển

Cấu trúc lựa chọn: if

if … else switch

Giới Thiệu Lập Trình

Bi

u Th

c Lơ-gic

2

Các phép toán logic

PHỦĐỊNH (!), VÀ (&&), HOẶC (||) Mức độưu tiên: &&cao ||

Kiểu liệu cơ

bản lô-gic

bool

(true), sai (false)

Chuyểnđổi kiểu dữliệu: Không (0, 0.0) sai (false) Khác không làđúng (true) Sai (false) là0

Đúng (true) là1

Giới Thiệu Lập Trình

Phép Tốn So Sánh

3 Phép Tốn Tốn TVí DKết qu

Nhỏhơn

<

a < b1 < 2 true Nhỏhơn

hoặc

<=

a <= b

1 <= 2 true Lớn

>

a > b1 > 2 false Lớn

hoặc

>=

a >= b

1 >= 2 false Bằng

==

a == b1 == 2 false Không

(khác)

!=

a != b

1 != 2 true Giới Thiệu Lập Trình

Phép Tốn Lơ-gic

4 Phép Tốn Tốn TVí DKết qu

&&

a && btrue && true true Hoặc

||

a || bfalse || false false

Phủ định

!

!a!true false

Giới Thiệu Lập Trình

B

ng Lơ-gic (Tốn T

L

ườ

i)

5

int a = 0; bool b;

b = (false) && (1/a); cout << b; b = (true) || (1/a); cout << b;

Giới Thiệu Lập Trình a b a && b

false false false false true false true false false true true true

a b a || b

false false false false true true

(14)

Đ

ộ Ư

u Tiên Các Phép Toán

6

Xácđịnh thứtự đểtính giá trịbiểu thức

x + > || x + < -3tươngđương: (( x + ) > 2) || (( x + ) < -3)

Giới Thiệu Lập Trình

Độ Ưu Tiên Tốn T

Cao ++, , ! *, /, %

+, -<, <=, >, >=

==, != && || Thấp =, +=, -=, *=, /=, %=

Lu

ng Đi

u Khi

n

7

Thứtựcác mệnh lệnh ch.tr thực

Thứtự đơn giản:

Thực theo thứtựviết mã nguồn

Thứtựmệnh lệnh phụthuộc dữliệuđầu vào Ví dụ: nhập sốngun dương tính ucln,

khơng, khơng tính, in thơng báo, dừng ch.tr Cần lựa chọn mệnh lệnh thực

Điều khiển mã nguồn chạy nhưthếnào

Giới Thiệu Lập Trình

C

u Trúc L

a Ch

n Trong C++

8

if

if … else switch

Giới Thiệu Lập Trình

C

u Trúc L

a Ch

n

if

9

Cú pháp:

if (BiuThcLôgic) {

// thân if

MnhLnh; MnhLnh;

… … … }

Ý nghĩa: nếuBiuThcLôgicđúng (true),

thânifđược thực hiện, không, điều khiển

chuyển sang mệnh lệnh sau cấu

trúcif

Giới Thiệu Lập Trình

C

u Trúc L

a Ch

n

if

Ví dụ:

double luong = MUC_LUONG_CO_BAN * soGioLam; if (soGioLam > SO_GIO_LAM_QUY_DINH) {

int luongTangThem = MUC_LUONG_CO_BAN * 0.5 * (soGioLam - SO_GIO_LAM_QUY_DINH); luong = luong + luongTangThem;

}

C

u Trúc L

a Ch

n

if … else

Cú pháp:

if (BiuThcLôgic) {

// thân if

MnhLnh;

… … … } else {

// thân else

MnhLnh;

(15)

C

u Trúc L

a Ch

n

if … else

12

Cú pháp:

if (BiuThcLôgic) {

// thân if }

else {

// thân else }

Ý nghĩa: nếuBiuThcLôgicđúng (true),

thânifđược thực hiện, nếuBiuThcLôgic

sai (false), thânelseđược thực Giới Thiệu Lập Trình

C

u Trúc L

a Ch

n

if … else

13

Ví dụ:

Giới Thiệu Lập Trình bool hocCaiThien;

if (diemSo < 60) {

hocCaiThien = true; }

else {

hocCaiThien = false; }

C

u Trúc L

a Ch

n

if … else

14

Ví dụ:

Giới Thiệu Lập Trình bool hocCaiThien = false; if (diemSo < 60)

{

hocCaiThien = true; }

else {

hocCaiThien = false; }

C

u Trúc L

a Ch

n

if … else

L

ng

15

Giới Thiệu Lập Trình char xepHang = 'F';

if (diemSo >= 80) xepHang = 'A'; else if (diemSo >= 70)

xepHang = 'B'; else if (diemSo >= 60)

xepHang = 'C'; else if (diemSo >= 50)

xepHang = 'D'; else if (diemSo >= 40)

xepHang = 'E';

C

u Trúc L

a Ch

n

if … else

L

ng

16

Giới Thiệu Lập Trình char xepHang = 'F';

if (diemSo >= 80) xepHang = 'A'; else

if (diemSo >= 70) xepHang = 'B'; else

if (diemSo >= 60) xepHang = 'C'; else

if (diemSo >= 50) xepHang = 'D'; else

if (diemSo >= 40) xepHang = 'E';

C

u Trúc L

a Ch

n

if … else

L

ng

17

Giới Thiệu Lập Trình char xepHang = 'F';

if (diemSo >= 80) {

xepHang = 'A'; }

else {

if (diemSo >= 70) {

xepHang = 'B'; }

else {

… … … } }

Sửdụng {

… … … }

(16)

C

u Trúc L

a Ch

n

if … else

L

ng

18

Lỗi thường xảy ra: error: ‘else’ without a previous if

Giới Thiệu Lập Trình char xepHang = 'F';

if (diemSo >= 80) xepHang = 'A'; soDiemA = soDiemA + 1; else

… … …

C

u Trúc L

a Ch

n

if … else

L

ng

19

elsecủaifnào?

Khi x=5, mệnh lệnh thực hiện, in ra? elsecủaifgần

Giới Thiệu Lập Trình if (x > 5)

if (y > 5)

std::cout << "x va y > 5"; else

std::cout << "x <= 5";

C

u Trúc L

a Ch

n

if … else

loại bỏtrường hợp không cần thiết

20

if (!a && !b) output = false; else if (!a && b) output = true; else if (a && !b) output = true; else if (a && b) output = true; Phân tích loại trường hợp không cần thiết

if (!a && !b) output = false; else output = true;

Giới Thiệu Lập Trình

a b output

false false false false true true

true false true true true true

C

u Trúc L

a Ch

n

if … else

21

Bài tập (xem mã nguồn) Kiểm tra sốnhập vào chẵn hay lẻ Tìm sốlớn sốnhập vào Đoán số

Giới Thiệu Lập Trình

M

t S

L

ư

u Ý

Nhầm lẫn gán (=) so sánh (==) Không lỗi dịch

Kết quảchạy khác if (a = 1) // luônđúng if (a = 0) // sai if (a = b) // tươngđương

if ( (a = b) != )

Thực phép gán xong kiểm trađiều kiện Không (0, 0.0) sai (false)

Khác không làđúng (true)

M

t S

L

ư

u Ý

Biểu thức lơ-gic tốn học (0 tuoi 150)

Chuyển sang ngơn ngữlập trình (0 <= tuoi <= 150)

dịch không lỗi chạy sai!!!

Biểu thức logic ngơn ngữlập trình

Phải sửdụng phép tốn lơ-gic

(0 <= tuoi && tuoi <= 150)

Lỗi thường gặp: biểu thức lô-gic sai/đúng

(17)

C

u Trúc L

a Ch

n

switch

24

Cú pháp:

switch (BiuThc) {

case HngS1: CmMnhLnh1;break; case HngS2: CmMnhLnh2;break; case HngS3: CmMnhLnh2;break; … … …

default: CmMnhLnhMcĐịnh;

}

Lưu ý: kiểu củaBiuThclà kiểu sốnguyên

(bool, char, int, short, long) Giới Thiệu Lập Trình

C

u Trúc L

a Ch

n

switch

25

Cú pháp:

switch (BiuThc) {

… … … } Ý nghĩa:

Mệnh lệnhcaseđược xét từtrên xuống Giá trịHngSốcủacasenàoứng với giá trịcủa

BiuThc, CmMnhLnhcủacaseđó thực Khi gặpbreak, khỏi cấu trúcswitch Thực hiệnCmMnhLnhMcĐịnhnếu khơng có

casenào tươngứng

Giới Thiệu Lập Trình

C

u Trúc L

a Ch

n

switch

26

Ví dụ:

Giới Thiệu Lập Trình int ngay; std::cin >> ngay; switch (ngay)

{

case 2: std::cout << "hoc chieu"; break; case 3: std::cout << "hoc sang"; break; case 4: std::cout << "di lam"; break;

case 5: std::cout << "hoc sang va chieu"; break; case 6: std::cout << "hoc chieu va toi"; break; case 7: std::cout << "choi the thao"; break; case 0: std::cout << "di sang nha ban"; break; default: std::cout << "o nha ngu";

}

C

u Trúc L

a Ch

n

switch

27 Nếu khơng cóbreaksẽthực cáccasetiếp theo

đến gặpbreakthì khỏiswitch

Giới Thiệu Lập Trình int ngay; std::cin >> ngay; switch (ngay)

{

case 2: case 3: case 5:

case 6: std::cout << "di hoc"; break; case 4: std::cout << "di lam"; break; case 7:

case 0: std::cout << "di choi"; break; default: std::cout << "o nha ngu"; }

C

u Trúc L

a Ch

n

switch

28

Giới Thiệu Lập Trình int nam, thang, soNgay;

std::cin >> thang; std::cin >> nam; switch (thang) {

case 2:

soNgay = (nam % == &&

(nam % 100 != || nam % 400 == 0)) ? 29 : 28; break;

case 4: case 6: case 9: case 11: soNgay = 30; break;

default:

soNgay = 31; break; }

C

u Trúc L

a Ch

n

switch

sửdụng thiết kếmenu điều khiển

29

Giới Thiệu Lập Trình switch (comboKFC)

{

(18)

Tham Kh

o

30

Đọc sách:

Chương 3, Lập Trình CơBản C++

(19)

Giới Thiệu Lập Trình Cấu Trúc Lặp

TS Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN

N

i Dung

1

Cấu trúc lặp: for while do … while

Giới Thiệu Lập Trình

C

u Trúc Đi

u Khi

n – L

p

2

Mơ hình hànhđộng lặp sốlần cố định In “teacher is so cool” 10 lần

Chạy hàm tínhđiểm sinh viên 1000 lần Chạy vịng quanh sân vậnđộng Sốlần lặp có thểkhơng biết

Quấy súp chođến khiđặc Nhập vào sốnguyên dương

Chọn sốngẫu nhiên tới trúng thưởng Tươngứng với lặp giới hạn (trên) lặp không

giới hạn (dưới)

Giới Thiệu Lập Trình

C

u Trúc L

p Gi

i H

n

3

Xét toán in dấu std::cout << "*"; std::cout << "*"; std::cout << "*"; Xét toán in dấu

std::cout << "*"; std::cout << "*"; std::cout << "*"; std::cout << "*"; Xét toán in raNdấu

std::cout << "*"; …? Giới Thiệu Lập Trình

C

u Trúc L

p Gi

i H

n

4

Mơ hình hành

độ

ng l

p:

Dựa sốlần lặpN

Có thểcần biếtđếm bắtđầu từ0 Tăng biếtđếm thêm sau lần lặp Khiđó lặp lại hànhđộng, ví dụ

std::cout << "*";

Cho đến biếtđếm tới giá trịcủaN Và dừng lại

Giới Thiệu Lập Trình

C

u Trúc L

p Gi

i H

n

for

5

Cú pháp:

for (MnhLnh1; BiuThcLôgic; MnhLnh2) {

// thân vòng lp }

MệnhLệnh1khởi tạo biếnđếm (biếnđiều khiển) Chỉthực lần bắtđầu lặp MệnhLệnh2thayđổi biếnđếm (biếnđiều khiển) BiểuThứcLơgicđiều khiển q trình lặp (vớiđiều

(20)

C

u Trúc L

p Gi

i H

n

for

6

Cú pháp:

for (MnhLnh1; BiuThcLơgic; MnhLnh2) {

// thân vịng lp }

Ý nghĩa:

1 MnhLnh1khởi tạo biếnđiều khiển NếuBiuThcLơgicđúng

3 Mệnh lệnh thân vịng lặp thực Thayđổi giá trịbiếnđiều khiển (MnhLnh2) Quay lại bước

6 Nếu không (BiuThcLôgicsai), kết thúc lặp

Giới Thiệu Lập Trình

C

u Trúc L

p Gi

i H

n

for

7

Ví dụ:

VớiN=

Giá trịcủa n i=0 i=1 i=2 i=3 i=4

Điều khiển lặp true true true true false

Kết * * * * Giới Thiệu Lập Trình // i biến đếm (biến điu khin) for (int i = 0; i < N; i = i + 1) {

std::cout << "*"; }

C

u Trúc L

p Gi

i H

n

for

– Ví D

8 Giới Thiệu Lập Trình

for (int i = 0; i < 25; i = i + 1) {

std::cout << "teacher is so cool\n"; }

for (int i = 1000; i > 0; i = i - 1) {

tinhDiem(); }

for (int i = 0; i < 5; i = i + 1) {

chy vòng quanh sân vn động; }

C

u Trúc L

p Gi

i H

n

for

– Ví D

9

In tổng N sốnguyên dươngđầu tiên

Cần biến (ngoại trừN, nhập)

2 biến: biếnđiều kiển, biến lưu tổng Khởi tạoởđâu

Biến lưu tổng khởi tạo cấu trúc lặp Biếnđiều khiển khởi tạo cấu trúc lặp Khi in tổng

Kết thúc vịng lặp, in tổng (nhưyêu cầu) Thân vòng lặp

Cộng sốnguyên dương vào tổng Khi kết thúc lặp

Cộng xong N sốnguyên dương (biếnđiều khiển) Giới Thiệu Lập Trình

C

u Trúc L

p Gi

i H

n

for

In tổng N sốnguyên dươngđầu tiên

int tong = 0;

for (int i = 1; i <= N; i = i + 1) {

tong = tong + i; }

std::cout << tong;

C

u Trúc L

p Gi

i H

n

for

In tích N sốnguyên dươngđầu tiên

int tich = 1;

for (int i = 1; i <= N; i = i + 1) {

tich = tich * i; }

Ngày đăng: 10/03/2021, 15:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN