Professional Documents
Culture Documents
Ví dụ 2: Viết chương trình tìm số lớn nhất (max) trong hai số nhập vào bàn phím. Thứ tự
các bước phải làm là:
Trang - 1 -
NĂM HỌC: 2022 - 2023
Trang - 2 -
NĂM HỌC: 2022 - 2023
Trong ví dụ trên thì biểu thức điều kiện ở bước 2 gồm 2 điều kiện:
: điều kiện thoát vòng lặp nếu tìm thấy vi phạm bước 1.
Bây giờ bài toán này được phát triển lên như sau:
Ví dụ 2: Viết chương trình nhập vào tùy ý các số nguyên dương cho đến khi nhập số 0 thì
dừng. Hãy đếm xem có bao nhiêu số là hợp số và tính tổng các hợp số đó?
Trang - 3 -
NĂM HỌC: 2022 - 2023
Ở bước thứ 3 trong ví dụ 2, nếu ta sửa điều kiện như sau, thì kết quả là số các số nguyên tố và
tổng các số nguyên tố đã nhập.
Ví dụ 3: Viết chương trình nhập (import) từ file dayso.txt một dãy số nguyên gồm có X phần
tử (X<=10000) vào một danh sách (dayso). Kiểm tra xem dãy số có đối xứng hay không?
Trang - 4 -
NĂM HỌC: 2022 - 2023
Trang - 5 -
NĂM HỌC: 2022 - 2023
Ý tưởng thuật toán vận dụng kỹ thuật đánh dấu như sau:
- Dùng 2 danh sách tạm listB, listC nhận dữ liệu từ mảng listA ban đầu.
- Sắp xếp listB tăng dần.
- Tính tổng các phần tử đầu của listB sao cho giá trị tổng <= 500
+ Mỗi lần cộng được một phần tử listB[i] vào tổng thì tìm phần tử listB[i] đó trong listC, khi
tìm thấy thì thay giá trị listC[i] := -1 để đánh dấu.
- Duyệt lại trên listC, nếu phần tử listC[i]= -1 thì lấy giá trị listA[i].
listA[] dữ liệu đầu vào (mảng chính)
60 70 30 15 17 80 16 75 90 85 40 75
listB[] (sắp xếp tắng dần)
15 16 17 30 40 60 70 75 75 80 85 90
listC[] (đánh dấu vị trí được chọn bằng số -1)
-1 -1 -1 -1 -1 -1 -1 -1 90 85 -1 -1
Code giải bằng Scratch:
Trang - 6 -
NĂM HỌC: 2022 - 2023
Trang - 7 -
NĂM HỌC: 2022 - 2023
Thuật toán trên, mấu chốt là học sinh phải giải quyết được:
Còn “khoảng_cách/bước_nhảy_giữa_hai_phần_tử” đơn giản nhất là bằng 1.
Ví dụ 1: Đề thi tin học trẻ tỉnh Lâm Đồng năm 2018
Câu 1 (6 điểm) SỐ ĐẸP
Một số được gọi là “số đẹp” nếu tổng bình phương các chữ số của nó (trong dạng biểu
diễn thập phân) là một số nguyên tố.
Ví dụ: 12 là một “số đẹp” vì 12 + 22 = 5 là số nguyên tố. Các “số đẹp” được đánh theo
thứ tự tăng dần của giá trị, bắt đầu từ 1 trở đi.
Yêu cầu: Cho số nguyên N (1≤ N ≤ 106). Hãy tìm “số đẹp” thứ N.
Dữ liệu vào: từ file văn bản SODEP.INP: chứa duy nhất một số nguyên N.
Kết quả: Ghi ra file văn bản SODEP.OUT: chứa duy nhất một số là kết quả “số đẹp”
tìm được tương ứng của mỗi test từ file dữ liệu vào.
SODEP.INP SODEP.OUT
1 11
2 12
Code giải bằng Scratch:
Trang - 8 -
NĂM HỌC: 2022 - 2023
Thuật toán 2: Dùng biến danh sách để giải các bài toán có dạng giống nhau như Fibonaci, dãy
Tribonaci, dãy Lucas, dãy nguyên tố, dãy có cấp số, … Với những bài dạng này, chúng ta sử
dụng chung một kiểu thuật toán như sau:
- Bước 1: Dùng một danh sách list_dayso lưu tất cả các số của dãy thỏa tính chất
- Bước 2: Xuất phần tử theo yêu cầu.
Ví dụ 2:
Trang - 9 -
NĂM HỌC: 2022 - 2023
Trang - 10 -
NĂM HỌC: 2022 - 2023
Tương tự, tính tổng bình phương các chữ số của … của một số tự nhiên n?
Tương tự, tìm chữ số lớn nhất, nhỏ nhất… của một số tự nhiên n?
Bài 2. Đếm các chữ số của một chuỗi tùy ý
Bài toán: Nhập vào một chuỗi st từ bàn phím, viết chương trình thông báo có bao nhiêu chữ số
trong chuỗi?
Ví dụ: st = ab2k45e thì thông báo “Số các chữ số là: 3”
Code giải bằng Scratch:
Trang - 11 -
NĂM HỌC: 2022 - 2023
Trang - 12 -
NĂM HỌC: 2022 - 2023
Bài 6: Xuất xâu đảo ngược, kiểm tra xâu đối xứng
Bài toán 1: Cho trước (hoặc nhập từ bàn phím) xâu ký tự Str, in ra xâu thu được từ Str bằng
cách viết theo thứ tự ngược lại?
Ví dụ: nhập st = abcdef thì thông báo “Chuỗi đảo ngược: fedcba”
Ý tưởng: Dùng một xâu st_tam và lần lượt nối các ký tự st theo thứ tự ngược lại.
Code giải bằng Scratch:
Trang - 13 -
NĂM HỌC: 2022 - 2023
Bài toán 2: Cho trước (hoặc nhập từ bàn phím) xâu ký tự St, in ra thông báo xâu st có đối xứng
hay không?
Ví dụ: nếu nhập st = abcd thì thông báo “không đối xứng”, nếu nhập st = abba thì thông báo
“đối xứng”.
Ý tưởng: Dùng một xâu st_tam và lần lượt nối các ký tự st theo thứ tự ngược lại, so sánh nếu
st_tam = st thì là xâu đối xứng.
Code giải bằng Scratch:
Trang - 14 -
NĂM HỌC: 2022 - 2023
Bài 1. Nhập (import) từ file daysoA.txt vào một danh sách daysoA, file daysoB.txt vào một
danh sách daysoB. Viết chương trình tạo ra danh sách daysoC gồm các phần tử số có trong
daysoA mà không có trong daysoB?
Bài 2. Cho dãy số 4, 8, 12, 16, … tính tổng của 100 số hạng đầu tiên.
Bài 3. Cho dãy số 1, 3, 7, 13, 21, …, n biết n là một số gần bằng số 92. Tính trung bình cộng
của dãy số trên.
Bài 4. Em hãy dùng phần mềm Scratch, Lập trình tính tiền điện tiêu thụ cho một hộ gia đình
theo yêu cầu sau:
- Tạo các biến số: Tiền điện, Số điện mới, Số điện cũ, Số điện tiêu thụ.
- Nếu số điện tiêu thụ lớn hơn 100 thì nhân với đơn giá điện là 3000 đồng.
- Ngược lại nhỏ hơn 100 thì nhân với đơn giá điện là 1500 đồng.
Cho biết:
Số điện tiêu thụ= Số điện mới – số điện cũ
Tiền điện =Số điện tiêu thụ * đơn giá.
Bài 5. Tính tuổi: Tổng số tuổi của mẹ và con hiện này là 44 tuổi. Tìm tuổi mẹ và con hiện nay.
Biết rằng 4 năm trước tuổi mẹ gấp 8 lần tuổi con.
Bài 6. Chia kẹo: Qui tắc chia kẹo như sau: Bạn đầu tiên được nhận 1 gói kẹo, bạn tiếp theo
nhận nhiều hơn bạn đứng trước đó 3 gói kẹo. Biết số học sinh tham gia gồm n bạn (Biết n
nguyên dương nhập từ bàn phím). Yêu cầu: Tính tổng số gói kẹo thầy giáo cần có để phát
thưởng cho n bạn học sinh.
Bài 7. Nhập vào 3 số tự nhiên, sau đó chương trình sẽ so sánh tìm ra số nhỏ nhất, số lớn nhất
trong 3 số đó bằng cách so sánh các số.
Trang - 15 -