Bài tập và thực hành 4 tin học 11
Bài tập và thực hành 4 trang 65 SGK Tin học 11: Bài tập và thực hành 4. Hãy tìm hiểu và chạy thử chương trình thực hiện thuật toán sắp xếp dãy số nguyên bằng trao đổi với các giá trị khác nhau của n dưới đây. Qua đó, nhận xét về thời gian chạy của chương trình. Advertisements (Quảng cáo) 1. Mục đích, yêu cầu – Biết nhận xét, phân tích đề xuất thuật toán giải bài toán sao cho chương trình chạy nhanh hơn; – Làm quen với dữ liệu có cấu trúc và bài toán sắp xếp. 2. Nội dung Bài 1
(”*chuong trinh giai bai toan sap xep day so*) Uses crt; const Nmax= 250; type ArrInt = ArrIy [ 1.Nmax] of integer, Var n, i, j. y, t: integer; A: Arrlnt; Begin clrscr; randomize; wirite(‘Nhap n= ‘); readln(n) ; {Trao ngau nhien mang gom n so nguyen} for i:= 1 to n do A[i]:= random(300) -random(300) ; for i:= 1 to n do write(A[i] : 5) ; {in mang vua tao} writeln; for j:=N downto 2 do for i:= 1 to j-l do if A[i]>A[i+1] then begin (*Trao doi A[i] va A[i+1]*) t:= A[i]; A[i]:= A[i+1]; A[i+1]:= t; end; writeln(‘Day so duoc sap xep:’); for i:= 1 to n do writeln(A[i]:7); writeln; readln End.
Bài 2:
Advertisements (Quảng cáo) Cho mảng A gồm n phần tử. Hãy viết chương trình lạo mảng B[1..n], trong đó B[i] là tổng của i phần tử đầu tiên của A. Thoạt đầu có thể viết chương trình sau để giải bài toán này: program subsuml; uses crt; const nmax=100; type Myarray= array[1..nmax] of integer; var A, B: Myarray; n, i, j: integer; Begin clrscr; randomize; write(‘ Nhap n:’); readln(n); {Tao ngau nhien mang gom n so nguyen} for i:= 1 to n do A[i]:= random(300)-random(300); for i:= 1 to n do write(A[i]:5) ; writeln; {Bat dau tao B} for i:= 1 to n do begin B[i] := 0; for j:= 1 to Ỉ do B[i]:= B[i] + A[j]; end; {ket thuc tao B} for i:= 1 to n do write(B[i]:6) ; readln End. Để ý rằng ta có các hệ thức sau: B[1 ] =A[1] B [ j ] = [ i -1) + A [ i ] , 1 < i ≤n . Với hai lệnh này, máy chỉ phải thực hiện n – 1 phép cộng, trong khi với đoạn chương trình trên máy phải thực hiện n(n + 1)/2 phé cộng. Nhờ việc phân tích ta có thể tiết kiệm được một lượng tính toán đáng kể. Tuy tốc độ tính toán của máy tính nhanh nhưng có giới hạn. Do đó, trong khi viết chương trình, ta nên tìm cách viết sao cho chương trình thực hiện càng ít phép toám càng tốt. - Rèn luyện kĩ năng sử dụng kiểu dữ liệu có cấu trúc, kĩ năng diễn đạt thuật toán bằng chương trình sử dụng dữ liệu kiểu mảng. - Rèn luyện kĩ năng nhận xét, phân tích và đề xuất cách giải bài toán sao cho chương trình chạy nhanh hơn. 3. Tư duy: - Tạo ra mảng 2 chiều và liên hệ đến các bảng cửu chương để tư duy lập trình các chương trình khác. 4. Thái độ: Bạn đang xem tài liệu "Giáo án môn Tin học khối 11 - Bài thực hành 4 (tiết 1)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên VnDoc xin giới thiệu tới các bạn học sinh tài liệu Giải bài tập Tin học 11: Bài tập và thực hành 4, tài liệu kèm theo lời giải chi tiết sẽ giúp các bạn học sinh học tốt hơn môn Tin học 11. Mời các bạn học sinh và thầy cô cùng tham khảo chi tiết tại đây nhé. Giải bài tập Tin học 11 Bài tập và thực hành 41. Mục đích, yêu cầu + Biết nhận xét, phân tích, đề xuất thuật toán giải bài toán sao cho chương trình chạy nhanh hơn. + Làm quen với dữ liệu có cấu trúc và bài toán sắp xếp. 2. Nội dung Bài 1 (trang 65 sgk Tin học 11):
Qua đó nhận xét về thời gian chạy chương trình. Trả lời: program sapxep; uses crt; const Nmax=250; var N,i,j,t:integer; A:array[1..Nmax] of integer; begin clrscr; randomize; write('nhap so luong phan tu cua day N='); readln(N); for i:=1 to N do begin A[i]:=random(300)-random(300); end; for i:=1 to N do write(A[i]:5); writeln; for j:=N downto 2 do writeln('day da duoc sap xep la ');
for i:=1 to N do write(A[i]:4);
readln;
end.Kết quả
Trả lời: program sapxep; uses crt; const Nmax=250; var N,i,j,t,dem:integer; A:array[1..Nmax] of integer; begin clrscr; randomize; write('nhap so luong phan tu cua day N='); readln(N); for i:=1 to N do begin A[i]:=random(300)-random(300); end; dem:=0; for i:=1 to N do write(A[i]:5); writeln; for j:=N downto 2 do writeln('day da duoc sap xep la ');
for i:=1 to N do write(A[i]:4);
writeln;
writeln('so lan thuc hien trao doi la ',dem);
readln;
end.Kết quả Bài 2 (trang 66 sgk Tin 11): Hãy đọc và tìm hiểu những phân tích để viết chương tình giải bài toán : Cho mảng A gồm n phần tử. Hãy biết chương trình tạo mảng B[1..n] trong đó B[i] là tổng của I phần tử đầu tiên trong A. Trả lời: Có 2 cách: Cách 1 là duyệt lần lượt các phần từ của mảng B. Đến vị trí I ta sẽ duyệt từ 1 đến I của mảng A rồi cộng dồn vào B[i] Cách 2 là ta nhận thấy B[j]=B[j-1]+A[j] nếu j khác 1và B[j]=A[1] nếu j=1. Cách 1: program sapxep; uses crt; const Nmax=250; var N,i,j,t,dem:integer; A:array[1..Nmax] of integer; B:array[1..Nmax] of integer; begin clrscr; randomize; dem:=0; write('nhap so luong phan tu cua day N='); readln(N); for i:=1 to N do begin A[i]:=random(300)-random(300); B[i]:=0; end; for i:=1 to N do writeln('dem=',dem);
readln;
end.Kết quả Số lần thực thi phép cộng là: Cách 2: program sapxep; uses crt; const Nmax=250; var N,i,j,t,dem:integer; A:array[1..Nmax] of integer; B:array[1..Nmax] of integer; begin clrscr; randomize; dem:=0; write('nhap so luong phan tu cua day N='); readln(N); for i:=1 to N do begin A[i]:=random(300)-random(300); B[i]:=0; end; B[1]:=A[1]; for i:=2 to N do writeln('dem=',dem);
readln;
end.Kết quả Số lần thực thi phép cộng là Nhận thấy sử dụng cách 2 có thể làm giảm đáng kể số lượng phép toán cần thực hiện. Tuy tốc độ máy tính rất nhanh nhưng cũng có giới hạn. Vì thế ta nên tìm cách viết sao cho chương trình thực hiện càng ít phép toán càng tốt. ---- Trên đây VnDoc.com vừa giới thiệu tới các bạn bài viết Giải bài tập Tin học 11: Bài tập và thực hành 4, mong rằng qua bài viết này các bạn có thể học tập tốt hơn môn Tin học lớp 11. Mời các bạn cùng tham khảo thêm kiến thức các môn Toán 11, Ngữ văn 11, Tiếng Anh 11, đề thi học kì 1 lớp 11, đề thi học kì 2 lớp 11... Để có kết quả cao hơn trong học tập, VnDoc xin giới thiệu tới các bạn học sinh tài liệu Sinh học lớp 11, Vật lý lớp 11, Hóa học lớp 11, Giải bài tập Toán 11 mà VnDoc tổng hợp và đăng tải. |