Viết chương trình nhập vào số kw điện, tính và xuất ra số tiền phải trả T theo công thức sau: - Nếu kw... Viết chương trình nhập vào số n n nguyên dương, xuất ra dãy số chẵn trong khoản
Trang 1Môn: Phương pháp dạy học Tin học 2
HƯỚNG DẪN BÀI TẬP/BÀI THỰC
HÀNH TIN HỌC 11
CHƯƠNG III CẤU TRÚC RẼ NHÁNH VÀ LẶP
Trần Thị Hồng Ninh K36.103.054
Trang 2§9 CẤU TRÚC RẼ NHÁNH
Bài tập cơ bản
1 Viết chương trình nhập số lượng đĩa DVD cần mua Sau đó tính số tiền phải trả Biết rằng mỗi đĩa DVD có giá 5000 VNĐ Nếu mua hơn 10 cái thì sẽ giảm 10%
Bộ dữ liệu mẫu:
2 Viết chương trình nhập 2 số nguyên a và b Kiểm tra xem a có phải là ước của b hay không
Bộ dữ liệu mẫu:
Gợi ý: a là ước của b nếu b chia hết cho a
3 Viết chương trình nhập vào số kw điện, tính và xuất ra số tiền phải trả (T) theo công thức sau:
- Nếu kw <= 100 thì tính 2000đ cho 1kw
- Nếu 100 < kw <=200 thì những kw vượt 100 tính 2500đ cho 1 kw
Bộ dữ liệu mẫu:
Trang 3kw T
Bài tập nâng cao
1 Viết chương trình nhập vào một hàm số bậc 2: ax 2 + bx + c (a ≠ 0), tính và xuất ra cực trị của hàm
Bộ dữ liệu mẫu:
2 Viết chương trình giải phương trình ax 4 + bx 2 + c = 0 (a ≠ 0)
Bộ dữ liệu mẫu:
Trang 4§10 CẤU TRÚC LẶP
Bài tập cơ bản
1 Viết chương trình nhập vào số n (n nguyên dương), xuất ra dãy số chẵn trong khoảng 1 đến n
Bộ dữ liệu mẫu:
20 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
2 Nhập số nguyên dương n, tính n!, biết n! = 1.2.3.4.5… n
Bộ dữ liệu mẫu:
3 Tìm ước chung lớn nhất của hai số nguyên dương a và b được nhập từ bàn phím
Bộ dữ liệu mẫu:
Trang 57 1 1
4 Nhập vào số thực a và số nguyên dương n, tính a mũ n (a n )
Bộ dữ liệu mẫu
Bài tập nâng cao
1 Tìm lỗi của chương trình sau và sửa lại cho đúng:
program TongBinhPhuong var n: integer;
ketqua: longint;
begin
write(‘Nhap vao n:’);
readln(n);
for i=1 to n do
ketqua=ketqua+i*i;
writeln(‘Voi n= ’, n ‘ tong binh phuong la ’, ketqua); readln
end
2 Viết chương trình tìm tất cả các số nguyên tố trong khoảng từ 2 đến n Với n là
số nguyên do người dùng nhập vào
Bộ dữ liệu mẫu
Trang 610 2, 3, 5, 7
Trang 7HƯỚNG DẪN GIẢI
Bài 9: Cấu trúc rẽ nhánh
Viết chương trình nhập số lượng đĩa DVD cần mua Sau đó tính số tiền phải trả Biết rằng mỗi đĩa DVD có giá 5000 VNĐ Nếu mua hơn 10 cái thì sẽ giảm 10%
1 Xác định bài toán:
(I): sl (số lượng đĩa DVD)
(O): st (số tiền cần phải trả)
2 Phân tích:
a) Thành phần dữ liệu:
sl, st: số nguyên
b) Thành phần xử lý:
st ← sl*5000 (1)
Nếu (sl>10) (2)
st ← st*90/100
vd: sl =15
(1) st = 75000
(2) st = 67500
Vậy số tiền cần trả là 67500 VNĐ
3 Thiết kế:
a) Đơn vị dữ liệu:
sl, st: integer;
b) Đơn vị xử lý:
Tính số tiền cần phải trả
4 Cài đặt:
…
var sl, st: integer;
…
st:=sl*5000;
if sl>10 then st:=st*90/100;
Writeln(‘So tien can tra la:’, st);
Bắt đầu
n
n £ 10
Kết thúc
T ß5000 * n T ß5000*n – (5000*n*10%)
T
Trang 8…
Viết chương trình nhập 2 số nguyên a và b Kiểm tra xem a có phải là ước của b hay không
1 Xác định bài toán:
(I): a, b
(O): a có phải là ước của b hay không
2 Phân tích:
a) Thành phần dữ liệu:
a, b: số nguyên
b) Thành phần xử lý:
Nếu (b mod a)= 0 thì
a là ước của b còn ngược lại là
không vd: a = 2, b =6
a là ước của b
Vậy kết quả sẽ xuất ra: a là ước của b
3 Thiết kế:
a) Đơn vị dữ liệu:
a, b: integer;
b) Đơn vị xử lý:
Kiểm tra xem a có là ước của b hay không
4 Cài đặt:
…
var a, b: integer;
…
if b mod a =0 then writeln (‘ a la uoc cua b’) else
writeln (’a khong la uoc cua b’);
…
Bắt đầu
a, b (a < b)
b mod a = 0
a không là ước b
a là ước b
Kết thúc
Trang 9Viết chương trình nhập vào số kw điện, tính và xuất ra số tiền phải trả (T) theo công thức sau:
- Nếu kw <= 100 thì tính 2000đ cho 1kw
- Nếu 100 < kw <=200 thì những kw vượt 100 tính 2500đ cho 1 kw
1 Xác định bài toán:
(I): kw
(O): tính và xuất ra số tiền phải trả
2 Phân tích:
a) Thành phần dữ liệu:
kw: số thực
b) Thành phần xử lý:
Nếu kw <= 100 thì T = kw*2000
Nếu kw <= 100 thì T = kw*2000
3 Thiết kế:
a) Đơn vị dữ liệu:
kw: real;
b) Đơn vị xử lý:
Tính và xuất ra số tiền phải trả T
4 Cài đặt:
Trang 10Viết chương trình nhập vào một hàm số bậc 2: ax 2 + bx + c (a ≠ 0), tính và xuất ra cực trị của hàm
Xác định yêu cầu:
Input: a, b, c (số nguyên, a≠0)
Output: cực trị của hàm
Ý tưởng:
Cho hàm số bậc hai f(x) = ax2 + bx + c (a ≠0)
Cực trị M của f được xác định như sau:
xM = nghiệm của phương trình f‟(x) = 0 (xM = -b/2a)
yM = f(xM) = axM
2 + bxM + c Nếu a > 0 thì M là cực tiểu
Nếu a < 0 thì M là cực đại
Thuật toán:
B1: nhập a, b, c
B2: xM ß -b/2a; yM ß axM 2 + bxM + c
B3: nếu a > 0 thì đạt cực tiểu, đến B5
B4: nếu a < 0 thì đạt cực đại, đến B5
B5: xuất M(xM, yM) và thông báo cực đại hay cực tiểu, kết thúc
Bắt đầu
a, b, c (a ≠ 0)
a > 0
M(x M , y M ); Tb
Tb ß „cực đại‟ Tb ß „cực tiểu‟
Kết thúc
S
x M ß -b/2a
y M ß ax M
2
+ bx M + c
Đ
Trang 11Viết chương trình giải phương trình ax 4 + bx 2 + c = 0 (a ≠ 0)
Xác định yêu cầu:
Input: a, b, c (a, b, c số nguyên, a ≠0)
Output: các nghiệm (số thực)
Ý tưởng:
o Đặt t = x2
o Ta được phương trình mới: at2
+ bt + c = 0
o Giải phương trình at2
+ bt + c = 0 được nghiệm t
o Từ t suy ra x bằng cách lấy căn bậc hai của t
Trang 12Bài 10: Cấu trúc lặp
Viết chương trình nhập vào số n (n nguyên dương), xuất ra dãy số chẵn trong khoảng 1 đến n
Xác định yêu cầu:
Input: n (số nguyên dương)
Output: dãy số chẵn từ 1 đến n
Thuật toán:
B1: nhập n
B2: cho i chạy từ 1 đến n thực hiện:
Nếu i chia hết cho 2 thì xuất i
B3: kết thúc
Bắt đầu
n (n > 0)
i ß 1
Xuất i
Kết thúc
Đ
Đ
i £ n
i mod 2 = 0
i ß i + 1
S
S
Trang 13Nhập số nguyên dương n, tính n!, biết n! = 1.2.3.4.5… n
Xác định yêu cầu:
Input: n (số nguyên, n 0)
Output: kết quả n!
Thuật toán:
B1: nhập n
B2: gt ß1, i ß1
B3: nếu n ≠0 thì gt ß gt*i, i ß i+1
B4: nếu i £ n lặp lại B3 Ngược lại, xuất gt, kết thúc
Bắt đầu
n ( 0)
gt
i ß 1
gt ß 1
gt ß gt * i
Kết thúc
Đ
S
Đ
n ≠ 0
i £ n
i ß i + 1
S
Trang 14Tìm ước chung lớn nhất của hai số nguyên dương a và b được nhập từ bàn phím Xác định yêu cầu:
Input: a, b (số nguyên, > 0)
Output: UCLN (a, b)
Thuật toán:
B1: nhập a, b
B2: nếu a ≠b thì
Nếu a > b thì a ß a– b, ngược lại b ß b – a
B3: UCLN ß b
B4: xuất UCLN, kết thúc
Bắt đầu
a, b (>0)
a ß a – b
b ß b – a
UCLN ß b
Kết thúc
Đ
S
Đ
a ≠ b
a > b
S
Trang 15Nhập vào số thực a và số nguyên dương n, tính a mũ n (a n )
Xác định yêu cầu:
Input: a (số thực), n (số nguyên dương)
Output: giá trị an
Thuật toán:
B1: nhập a, n
B2: lt ß1, i ß 1
B3: nếu n ≠0 thì lt ß lt*a, i ß i+1
B4: nếu i £ n lặp lại B3 Ngược lại, xuất lt, kết thúc
Bắt đầu
a, n (n 0)
lt
i ß 1
lt ß 1
lt ß lt * a
Kết thúc
Đ
S
Đ
n ≠ 0
i £ n
i ß i + 1
S
Trang 16Tìm lỗi của chương trình sau và sửa lại cho đúng:
program TongBinhPhuong var n: integer;
ketqua: longint;
begin
write(‘Nhap vao n:’);
readln(n);
for i=1 to n do
ketqua=ketqua+i*i;
writeln(‘Voi n= ’, n ‘ tong binh phuong la ’, ketqua); readln
end
Sửa lại
program TongBinhPhuong;
var n: integer;
ketqua: longint;
i: integer;
begin
write(‘Nhap vao n:’);
readln(n);
for i:=1 to n do ketqua:=ketqua+i*i;
writeln(‘Voi n= ’, n, ‘ tong binh phuong la ’, ketqua);
readln end
Trang 17Viết chương trình tìm tất cả các số nguyên tố trong khoảng từ 2 đến n Với n là số nguyên do người dùng nhập vào
Xác định yêu cầu:
Input: a (số thực), n (số nguyên dương)
Output: giá trị an
Ý tưởng:
Ta dùng một cách khác để tìm ra các số nguyên tố từ 2 đến một số nào đó
Số n là một số nguyên tố nếu như “Tất cả các số nguyên kể từ 2 cho đến căn bậc
hai của n không phải là ước của nó.”
Nếu nhập n < 2, thông báo không có số nguyên tố nào
Ngược lại, thực hiện:
- Dùng biến j để điều khiển trình bày màn hình
- Cho m chạy từ 2 đến n:
Gán k là phần nguyên khi lấy căn bậc hai của m
Gán i = 2
Khi (m mod i <> 0) và (i <= k) thì:
Tăng i lên 1 đơn vị
Nếu i > k
o Nếu j mod 10 = 0 thì không xuất gì cả
o Tăng j một đơn vị
o Xuất ra m