Tải bản đầy đủ (.ppt) (15 trang)

Bài Tập Và Thực Hành 4(T1)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (499.59 KB, 15 trang )






BÀ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

Dem:=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

Bà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

Bài tập và thực hành 4 (tiết 1)




BÀ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




BÀ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;
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.




BÀ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;
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.
If A[i]<A[i+1] then
If A[i]>A[i+1] then
Minh họa




BÀ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;
Type ArrInt=Array[1 nmax] of Integer;
Var n,i,j,t
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;
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]:5);

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;
If A[i]>A[i+1] then
Việc thực hiện tráo
đổi khi thoả mãn đk
gì?
:integer;




BÀ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;




BÀ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

Cũ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

Cũ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

Dặ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

Bà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!

×