Giải thích các thành phần trong chương trình... Giải thích các thành phần trong chương trình... Nhập dữ liệu từ bàn phím gồm N phẩn tử B.. Tạo ngẫu nhiên 1 dãy số gồm N phần tử có trị tu
Trang 2BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1 Kiểm tra bài cũ
Bài 1 cho chương trình sau:
Const nmax=100;
Type MyArray= Array [1 nmax] of integer;
Var A:MyArray;
n,i,Dem:integer;
Begin
Randomize;
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do A[i]:=Random(301)-Random(301);
For i:=1 to N do Write(a[i]:5);
Writeln;
Dem:=0;
For i:=1 to N do
If A[i] >0 then Dem:=Dem+1;
Write(Dem);
Readln
End.
Giải thích các thành phần trong chương trình
Trang 3Dem:=0;
For i:=1 to N do
if A[i] >0 then Dem:=Dem+1;
Write(Dem);
Giả sử Nhập N=5
15 -48 -35 200 12
Kết quả in ra màn hình như thế nào?
Đáp án: 3
Trang 4Bài 2: Cho chương trình sau:
Const nmax=100;
Type MyArray=Array[1 nmax] of integer;
Var A:MyArray;
n,i,CS:integer;
Begin
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do
Begin
Write('A[',i,']= ');
Readln(A[i]);
End;
cs:=1
For i:=2 to N do
if A[i] <A[cs] then Cs:=i;
Write(A[cs]);
Readln
End.
Giả sử nhập N=5
2 -5 8 6 12
Hỏi kết quả in ra màn hình như thế nào?
Minh họa
Trang 5Bài tập và thực hành 4 (tiết 1)
Trang 6BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1
Bài tập 1a:
Const nmax=250;
Type ArrInt= Array [1 nmax] of Integer;
Var n,i,j,t:integer;
A:ArrInt;
Begin
Randomize;
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do A[i]:=Random(301)-Random(301);
For i:=1 to N do Write(a[i]:4);
Writeln;
For j:=N downto 2 do
For i:=1 to j-1 do
If A[i]>A[i+1] then
Begin
t:=A[i];
A[i]:=A[i+1];
A[i+1]:=t
End;
Writeln('Day so sau khi duoc sap xep: ');
For i:=1 to N do Write(A[i]:4);
Readln;
End
Giải thích các thành phần trong chương trình
Trang 7BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1
Bài tập 1a: Soạn thảo chương trình sau: Nhập N= 10 và xem kết quả Lưu File với tên sxgiamB5
Const nmax=250;
A:ArrInt;
Begin
Randomize;
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do A[i]:=Random(301)-Random(301);
Writeln;
t:=A[i];
A[i]:=A[i+1];
A[i+1]:=t;
Writeln('Day so sau khi duoc sap xep: ');
Readln;
End
Trang 8BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1
Bài tập 1: Từ chương trình trên hãy sửa lại để có chương trình sắp xếp các phần
tử của mảng thành 1 dãy không tăng
Const nmax=250;
A:ArrInt;
Begin
Randomize;
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do A[i]:=Random(301)-Random(301);
Writeln;
t:=A[i];
A[i]:=A[i+1];
A[i+1]:=t;
Writeln('Day so sau khi duoc sap xep: ');
Readln;
End
If A[i]<A[i+1] then
Minh họa
Trang 9BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1
Bài tập 1b: Khai báo thêm biến Dem và bổ sung vào chương trình những câu
lệnh cần thiết để biến Dem tính số lần thực hiện tráo đổi
Const nmax=250;
A:ArrInt;
Begin
Randomize;
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do A[i]:=Random(301)-Random(301);
For i:=1 to N do Write(a[i]:5);
Writeln;
t:=A[i];A[i]:=A[i+1]; A[i+1]:=t;
Writeln('Day so sau khi duoc sap xep: ');
Writeln;
Readln;
End
Minh họa
Dem Dem:=0;
Dem:=dem+1;
Write('So lan trao doi la: ',Dem);
,Dem
Dem:=0;
Dem:=dem+1;
Write('So lan trao doi la: ',Dem);
Đoạn lệnh nào thể hiện một lần tráo đổi giữa 2 phần tử
Begin
t:=A[i];A[i]:=A[i+1]; A[i+1]:=t;
End;
Việc thực hiện tráo đổi khi thoả mãn đk
gì?
:integer;
Trang 10BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1
Bài tập 1b: Mở bài tập 1a và sửa lại chương trình cách thêm vào các câu lệnh để được chương trình sắp xếp thành 1 dãy không giảm và số lần tráo đồi
Const nmax=250;
Type ArrInt= Array [1 nmax] of Integer;
Var n,i,j,t,Dem:integer;
A:ArrInt;
Begin
Randomize;
Write('Nhap so luong phan tu N= ');readln(n);
For i:=1 to N do A[i]:=Random(301)-Random(301); For i:=1 to N do Write(a[i]:5);
Writeln;
Trang 11BÀI TẬP VÀ THỰC HÀNH 4 TIẾT 1
Bài tập 1b: Mở bài tập 1a và sửa lại chương trình cách thêm vào các câu lệnh để được chương trình sắp xếp thành 1 dãy không giảm và số lần tráo đồi
Dem:=0;
For j:=N downto 2 do
For i:=1 to j-1 do
If A[i]>A[i+1] then
Begin
t:=A[i];
A[i]:=A[i+1];
A[i+1]:=t;
Dem:=dem+1;
End;
Writeln('Day sau khi duoc sap xep: ');
For i:=1 to N do Write(A[i]:5);
Writeln;
Write('So lan trao doi la: ',Dem);
Readln;
End
Minh họa
Trang 12Cũng cố
Bài 1: Đoạn lệnh sau thực hiện công việc gì?
Write(‘Nhap so luong phan tu N= ‘);Readln(N);
For i:=1 to N do A[i]:= random(101)-Random(101);
For i:=1 to N do Write(A[i]:5);
A Nhập dữ liệu từ bàn phím gồm N phẩn tử
B Tạo ngẫu nhiên 1 dãy số gồm N phần tử có trị tuyệt đối không quá 100
C Tạo ngẫu nhiên 1 dãy số gồm N phần tử có trị tuyệt đối không quá 300
Trang 13Cũng cố
Bài 2: Cho đoạn chương trình sau
For j:=N downto 2 do
For i:=1 to j-1 do
If A[i]<A[i+1] then
Begin
t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t
End;
For i:=1 to N do Write(A[i]:4);
Giã sử khi chạy chương trình nhập dãy số: -3 9 -15 21 -3 10 Hỏi chương trình in ra màn hình như thế nào?
Đáp án: 21 10 9 -3 -3 -15
Trang 14Dặn dò
- Về nhà hoàn thiện bài tập 1b vào vở
- Xem trước bài tập 2 trong BT và TH 4
- Sử dụng giải thuật khác để sắp xếp các phần tử của dãy thành một dãy không giảm
Trang 15Bài giảng đến đây kết thúc Kính mong sự góp ý của quý thầy cô
và các em học sinh để bài giảng sau
đ ợc tốt hơn Xin chân thành cảm ơn!