Bài giảng Lập trình nâng cao: Hàm - Trần Quốc Long

34 15 0
Bài giảng Lập trình nâng cao: Hàm - Trần Quốc Long

Đ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

Bài giảng Lập trình nâng cao: Hàm cung cấp cho người học các kiến thức: Đoán số (guess it), chuyển hóa vấn đề thành chương trình, kỹ thuật sinh số ngẫu nhiên, kỹ thuật vòng lặp, điều kiện vòng lặp, kỹ thuật mô-đun hóa chương trình bằng hàm.

Game: Guess It - Hàm https://github.com/tqlong/advprogram Nội dung ● Game: Đoán số (Guess It) ● Chuyển hoá vấn đề thành chương trình ● Kỹ thuật: ○ Sinh số ngẫu nhiên ○ Vịng lặp, điều kiện vịng lặp ○ Mơ-đun hóa chương trình hàm Đốn số: Luật chơi ● Hai người: chủ trò - A, người chơi - B ● Người A chọn số từ 1-100 ● Người B đoán số ○ Nếu đúng, người B thắng ○ Nếu sai, người A trả lời số người B đoán lớn hay nhỏ Người B tiếp tục đoán số ● Cho trẻ em học Toán ● Giúp hiểu thuật toán quan trọng: Tìm kiếm nhị phân (Binary Search) Đốn số: Chương trình ● Giữa người (B) máy (chủ trò - A) ● Máy "nghĩ" số từ đến 100 ● Người chơi đoán số ○ Nếu đúng, người chơi thắng Nếu sai, máy trả lời số người chơi đoán lớn hay nhỏ số máy để người chơi tiếp tục đốn số ● Cách khác: người (chủ trị - A) máy (đốn - B) Ví dụ lần chơi 10 Your number is too small 20 10 Your number is too big Congratulation ! You win Nội dung ● Game: Đoán số (Guess It) ● Chuyển hố thành chương trình ● Kỹ thuật: ○ Sinh số ngẫu nhiên ○ Vòng lặp, điều kiện vòng lặp ○ Mơ-đun hóa chương trình hàm Mơ tả thành bước (bằng lời) ● ● ● ● Máy tính nghĩ số Nhập số người chơi đoán Máy chọn câu trả lời phù hợp Lặp lại người chơi chưa đốn Mơ tả thành bước (gần máy) B1: Máy tính nghĩ số B2: Nhập số người chơi đoán B3: Máy chọn câu trả lời phù hợp B4: Nếu người chơi đoán sai Quay lại B2 Nếu người chơi đoán Chuyển tới B5 ● B5: Kết thúc ● ● ● ● Chương trình (mã giả, gần máy) randomNumber = generateRandomNumber(); // B1 while (true) { number = getPlayerGuess(); // B2 printAnswer(number, randomNumber); // B3 if (number == randomNumber) break; // B4 // else continue; } // B5 Chương trình (ngơn ngữ C++) int randomNumber = generateRandomNumber(); { int number = getPlayerGuess(); printAnswer(number, randomNumber); } while (number != randomNumber); Guess It 1.1 in t m ain () { in t random N um ber = generateRandom N um ber(); in t num ber; { num ber = getPlayerG uess(); printAnsw er(num ber,random N um ber); } w h ile (num ber != random N um ber); void p rin tA n sw er(in t num ber, in t random N um ber) retu rn ; { } if (num ber > random N um ber) { cout < < "Your num ber is too big." < < endl; } else if (num ber < random N um ber) { cout < < "Your num ber is too sm all." < < endl; } else { cout < < "Congratulation! You w in." < < endl; } } Guess It 1.1 void p rin tA n sw er(in t num ber, in t random N um ber) { if (num ber > random N um ber) { cout < < "Your num ber is too big." < < endl; } else if (num ber < random N um ber) { cout < < "Your num ber is too sm all." < < endl; } else { cout < < "Congratulation! You w in." < < endl; } } Lặp lại (Game loop) ● Nếu người chơi đoán sai, lặp lại bước nhập ● Cần hỏi người chơi lần ● Vịng lặp … while Game loop { // N hập sốốngườichơiđoán // In câu tra ả lờiphù hợp } w h ile (num ber != random N um ber); Kết C:\softw are\cygw in64\hom e\doe\advprogram \lec2-guessit\G uessIt.exe Enter your num ber betw een and 100: 50 Your num ber is too big Enter your num ber betw een and 100: 25 Your num ber is too sm all Enter your num ber betw een and 100: 42 Congratulation! You w in Thực hành ● Hiển thị số lần đoán người chơi ● Điểm người chơi = 100 - số lần đoán ● Điểm người chơi = 10000 - x 100 - x 99 - … tùy theo số lần người chơi đoán ● Cho phép chơi nhiều ván ○ Hỏi người chơi có muốn chơi tiếp khơng ? ○ Gợi ý: đưa tồn mã hàm main() vào hàm playGuessIt() Cho phép chơi nhiều ván ● Bạn có nhận lần chạy chương trình, máy “nghĩ” lại số ● Tìm kiếm Google: “C++ random repeat” ● Câu lệnh: srand(time(0)); ● Khởi tạo “hạt giống” cho hàm rand() thời gian bắt đầu chạy chương trình ○ Lưu ý: cần gọi srand() lần ● Mỗi lần chạy, chương trình dùng hạt giống khác : thời gian hành Tổng kết ● Viết chương trình kể câu chuyện ● Chia nhỏ bước thành hàm lệnh ○ Mơ-đun hóa hàm ○ Truyền tham số giá trị ● Tìm kiếm, tra cứu kỹ thuật lập trình ○ Khơng thể thiếu tiếng Anh ● Sinh số (giả) ngẫu nhiên ● Lựa chọn if … else if … else ● Vòng lặp … while Máy chơi Guess It ● Đặt vấn đề: đảo vai trò người máy ○ Người làm chủ trò, nghĩ số từ đến 100 ○ Máy đốn số ○ Người “thơng báo” cho máy giá trị máy đoán lớn hơn, nhỏ hay giá trị cần tìm ● Có nhiều cách chơi (thuật tốn đoán) ○ Đoán ngẫu nhiên ○ Đoán từ đến 100 (hoặc ngược lại) ○ Đoán “đại” số, nhận trả lời người chơi để phán đoán lần sau nên đoán Thuật toán chung B1: select a number X in [1, 100] B2: ask for host’s answer on X B3: if X is right, exit (win) else goto B1 Thuật toán chung ch ar g etH ostA n sw er(in t X) { ch ar answ er; cout < < "Is " < < X < < " your num ber? "; cin > > answ er; retu rn answ er; } in t X, answ er; { X = selectN um ber(1, 100); answ er = getH ostAnsw er(X); if (answ er = = '= ') cout < < "Your num ber is " < < X < < endl; } w h ile (answ er != '= '); tùy thuộc vào hàm selectNumber() mà ta có cách đốn (thuật tốn đốn) khác Quy ước trả lời: answer >, : X lớn số cần đoán

Ngày đăng: 08/05/2021, 11:51

Mục lục

    Đoán số: Luật chơi

    Đoán số: Chương trình

    Ví dụ một lần chơi

    Mô tả thành các bước (bằng lời)

    Mô tả thành các bước (gần máy)

    Chương trình (mã giả, gần máy)

    Chương trình (ngôn ngữ C++)

    Tách hàm (mô-đun hóa)

    Sao lại tiếng Anh ? Khó thế :(

    Máy tính nghĩ số

Tài liệu cùng người dùng

Tài liệu liên quan