2. Tìm và đưa ra màn hình các số chính phương, nguyên tố, hoàn hảo trong mảng.. Bài 6: Nhập vào một mảng N phần tử nguyên và một số nguyên K. Đưa ra màn hình:. a) Số lượng phần tử trong [r]
(1)* Câu lệnh gán:
<tên biến>:=<biểu thức>;
Lưu ý: Biến biểu thức phải kiểu liệu
Bài 6: CÂU LỆNH RẼ NHÁNH Rẽ nhánh
- Là việc thực nhiều công việc tùy theo điều kiện Câu lệnh rẽ nhánh
- Dạng thiếu:
IF <điều kiện> THEN <câu lệnh>; Đ
S
Ví dụ: Tìm số lớn số a,b Readln(a,b);
Max:=a;
If max<b then max:=b; Writeln(max);
ĐK
(2)- Dạng đủ:
IF <điều kiện> THEN <câu lệnh1> ELSE <Câu lệnh 2>;
S Đ
Ví dụ: Tìm số lớn số a,b IF a>b then max:=a else max:=b;
ĐK
(3)3 Câu lệnh ghép
- Ghép nhiều câu lệnh thành câu lệnh - Cấu trúc:
Begin
<các câu lệnh>; End;
Ví dụ: Tính nghiệm PT bậc 2: ax2+bx+c=0
If delta>0 then Begin
Writeln(‘Phuong trinh co nghiem phan biet:’); X1:=(-b+sqrt(b*b-4*a*c))/(2*a);
(4)1 Cách giải PT bậc ax+b = B1: Nhập a, b
B2: Xét trường hợp - Nếu a =
+ Nếu b = PT VSN + Nếu b <> PT VN
- Nếu a <>0 PT có nghiệm x = -b/a Cách giải PT bậc 2: ax2+bx+c=0
B1: Tính Delta: Delta = b2-4ac
B2: Xét Delta
- Nếu Delta <0 PT vơ nghiệm
- Nếu Delta = PT có nghiệm kép x1=x2=-b/(2*a)
- Nếu Delta >0 PT có nghiệm phân biệt: X1:=(-b+sqrt(b*b-4*a*c))/(2*a); X1:=(-b-sqrt(b*b-4*a*c))/(2*a);
BTVN: Lập trình giải phương trình bậc ax+b=0 PT bậc ax2+bx+c=0
Ví dụ:
2x2 - 3x + = 0
(5)(6)Bài 7: Cấu trúc lặp Lặp
- Là việc thực nhiều lần cơng việc - Có cách lặp:
+ Biết trước số lần lặp + Chưa biết số lần lặp Cấu trúc lặp
a) Lặp biết trước số lần: FOR – DO - Dạng tiến:
For <biến đếm>:=<cs đầu> to <cs cuối> Do <câu lệnh>; + Biến đếm: thường kiểu nguyên
+ cs đầu, cs cuối: Phải kiểu với biến đếm Ví dụ:
(7)- Dạng lùi:
For <biến đếm>:=<cs cuối> downto <cs đầu> Do <câu lệnh>; Ví dụ 1: In hình số nguyên dương lẻ nhỏ 100 Ví dụ 2: In hình số phương từ đến 1000 Kiểm tra số i:
Hàm sqrt(i): Căn bậc hai Hàm sqr(i): Bình phương
Hàm Trunc(i): Là hàm lấy phần nguyên
Nếu I = sqr(trunc(sqrt(8))) = sqr(trunc(2.83)) = sqr(2) = <>
Nếu Bình phương phần nguyên bậc hai I mà I I số phương ngược lại khơng số phương
Ví dụ: I = 16
(8)Bài tập:
1 Lập trình đưa hình số phương nhỏ N (nhập từ bàn phím). 2 Nhập vào số nguyên N, kiểm tra xem số N có phải số nguyên tố hay khơng?
3 Lập trình đưa hình số lượng số nguyên tố nhỏ số M cho trước (nhập từ bàn phím).
4 Lập trình đưa hình loại số phương, ngun tố, hồn hảo nhỏ bằng N cho trước
(N nhập từ bàn phím).
Bài 1:
Duyệt từ đến N
(9)Code: Dem:=0;
For i:=1 to N
If sqr(trunc(sqrt(i)))=I then Begin Write(i:5); Inc(dem); End; Bài 2: Dem:=0;
For i:=1 to N Begin
If (1<i)and(i<4) then begin write(i:5); inc(dem); end; If I>=4 then
Begin c:=1;
For j:=2 to trunc(sqrt(I)) If I mod j = then
Begin c=0; break; end;
(10)(11)Bài 3: Dem:=0;
For i:=1 to N Begin
tu:=0;
For j:=1 to I-1
If I mod j = then tu:=tu+j;
(12)LÀM VIỆC VỚI DÃY SỐ
1 Khái niệm
- Dãy số gọi mảng chiều số Được đánh số từ đến N Ví dụ: Cho dãy số A
1
9 -2
- Để lưu trữ dãy số TP, thường lưu trữ dạng mảng chiều Khai báo mảng chiều
Cấu trúc:
Var <tên mảng>:ARRAY[Kiểu số] OF <Kiểu phần tử>; Ví dụ:
Var A:array[1 6] of integer; Var B:array[1 1000] of integer;
- Để truy xuất đến vị trí mảng: A[3]=8
3 Nhập liệu cho mảng Cách 1: Nhập từ bàn phím For i:=1 to N
Begin
Write(‘A[‘,I,’]=’); Readln(a[i]);
(13)Cách 2: Nhập ngẫu nhiên (random)
- Trước tiên phải tạo số ngẫu nhiên: Khai báo thư viện CRT, tạo số ngẫu nhiên thủ tục RANDOMIZE - Hàm random(x) tạo số ngẫu nhiên từ đến x-1
Randomize;
For i:=1 to N a[i]:=random(100); Cách 3: Nhập từ tệp (FILE)
4 Xuất liệu mảng Cách 1: Xuất hình
For i:=1 to n write(a[i]:5); Cách 2: Xuất tệp (FILE)
For i:=1 to n write(tên biến tệp, a[i]:5); Xử lý liệu mảng
- Tùy yêu cầu tập mà ta có cách xử lý mảng khác Bài tập:
1 Viết chương trình tìm số lớn nhỏ mảng
2 Tìm đưa hình số phương, nguyên tố, hoàn hảo mảng Sắp xếp mảng thành mảng khơng giảm
Ví dụ: Cho mảng A
(14)Kết quả:
(15)Bài 4: Tìm giá trị lớn thứ nhì (Max*) nhỏ thứ nhì (Min*) mảng Ví dụ: Cho dãy số:
8 9
(16)Thuật toán xếp: N =
5
Duyệt lần 1: SL PT
A1 A2 A3 A4 A5 A6
5
I=6: J=1:
J=2:
J=3: 5
J=4: 5
J=5: 5
Duyệt lần 2: SL PT
I=5: J=1: 5
J=2: 5
J=3: 5
J=4: 5
Duyệt lần 3: SL PT
I=4: 5
4 5
(17)Duyệt lần 4: SL PT
I=3:
4
Duyệt lần 5: SL PT
I=2: 5
(18)Bài 6: Nhập vào mảng N phần tử nguyên số nguyên K Đưa hình:
a) Số lượng phần tử dãy nhỏ K b) Tính tổng phần tử lớn K
Ví dụ:
Cho dãy N =
6 12
K =
Số phần tử nhỏ là:
Tổng phần tử lớn là: 21
(19)d) Số nguyên M số lượng số dãy có giá trị nhỏ số bên trái cạnh nó; Nếu M>0 đưa tiếp màn hình M dịng, dòng gồm số: Số thứ tự thứ i số Ai nhỏ số cạnh bên trái Hai số cách
nhau dấu cách.
Ví dụ:
Cho dãy N =
6 12
Thì M = 2 3 1 5 4
e) Đếm đưa hình số cực đại địa phương Trong đó: Số cực đại địa phương số: A1 A1>A2
Ai Ai>Ai+1 Ai >Ai-1 với i = -> n-1
An An >An-1
Ví dụ: Cho dãy
4 6 12 8 10 5 18 26
Dạng: Vị trí Giá trị cực đại địa phương
(20)3 12
5 10
8 26
(21)Bài 7: Đưa hình số lần xuất chữ số có nghĩa số nguyên dương N dạng: SO LAN XUAT HIEN CHU SO … : SO LUONG
Ví dụ: N = 10215
(22)KIỂM TRA 15 PHÚT
ĐỀ 1: (Dành cho bạn CLB) Lập trình nhập vào từ bàn phím ba số thực u, v, R (u,v) tọa độ tâm R bán kính đường tròn Nhập vào N cặp số thực Xi Yi (Xi,Yi) tọa độ điểm thứ i Đếm đưa hình số lượng điểm nằm hình trịn.
Ví dụ: Như hình kết quả Có điểm nằm hình trịn.
HD: Cơng thức tính khoảng cách 2 điểm (u,v) (x,y) là:
d = (x-u)^2 + (y-v)^2
ĐỀ 2: (Dành cho bạn khác) Lập trình nhập vào dãy N số nguyên số nguyên K, sau đưa màn hình:
a) Số lượng phần tử dương dãy. b) Số lượng phần tử ước K. Ví dụ:
N = 6
Dãy: 4 -2 9 31 -7 20 K = 40
Kết đưa hình: So luong phan tu duong la: 4
So luong uoc cua 40 la: 4 2 20
U=2, V=1, R=3 A(-3,1) B(1,3) C(1,1) D(3,-1) E(4,2) F(5,1) Kết quả:
Có điểm thuộc hình trịn
(23)CÂU LỆNH WHILE - DO
WHILE <ĐIỀU KIỆN> DO <CÂU LỆNH>;
Hoạt động: Trong điều kiện cịn cịn thực câu lệnh. Ví dụ:
Tính tổng từ đến 10. T:=0; i:=1;
WHILE I <=10 DO BEGIN