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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 858,32 KB

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ênchar

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ô-gicbool (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ọnif

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ọnif … 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ọnif … 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 … elseLồ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ọnif … elseLồ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 … elseLồ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ọnif … elseLồ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 … elseLồ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ọnif … 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ọnswitch

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ọnswitch

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ọnswitch

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ạnfor

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ạnfor

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ạnfor

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ạnfor– 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ạnfor– 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ạnfor

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ạnfor

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