1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(SKKN 2022) Hướng dẫn học sinh giỏi lớp 8 giải bài tập mảng một chiều trong Pascal.

20 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 342,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Như khi học xong câu lệnh rẽ nhánh nếu yêu cầu học sinh làm một bài tập nào đó thì phần lớn học sinh rất lúng túng và mất nhiều thời gian để cố nhớ xem bài này đã được thầy, cô giáo làm

Trang 1

MỤC LỤC

Trang

2.1 Cơ sở lí luận của sáng kiến kinh nghiệm 3 2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 3 2.3 Các sáng kiến kinh nghiệm hoặc giải pháp đã sử dụng để giải

quyết vấn đề

4

2.3.2 Các biện pháp tổ chức thực hiện các giải pháp 5

2.3.2.2 Khai báo trực tiếp mảng một chiều 7

2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục,

với bản thân, đồng nghiệp và nhà trường

17

Trang 2

1 MỞ ĐẦU 1.1 Lý do chọn đề tài

Pascal là một ngôn ngữ lập trình cấp cao Đây là một ngôn ngữ lập trình có cấu trúc chặt chẽ, rõ ràng và là nền tảng để học các ngôn ngữ lập trình cao hơn

Do đó Pascal được nhiều quốc gia trong đó có Việt Nam đưa vào chương trình giảng dạy Tin học ở các trường THCS

Thực tế trong quá trình giảng dạy tôi nhận thấy nhiều em học sinh luôn cảm thấy khó khăn trong việc học lập trình Pascal Đặc biệt với học sinh lớp 8 thì lại càng cảm thấy việc học lập trình Pascal là mới, lạ và khó Nếu các em học theo cách chỉ cần học thuộc và nhớ thao tác thì không có tác dụng Như khi học xong câu lệnh rẽ nhánh nếu yêu cầu học sinh làm một bài tập nào đó thì phần lớn học sinh rất lúng túng và mất nhiều thời gian để cố nhớ xem bài này đã được thầy, cô giáo làm như thế nào, học sinh rất khó hình dung ra thuật toán và cách viết chương trình Trong khi đó đặc thù của dạng bài tập mảng một chiều đòi hỏi các em cần phải học cách tư duy logic, mô tả thuật toán và viết những dòng lệnh máy tính chính xác đến từng đấu chấm, dấu phẩy

Mặc khác, với tâm lí thông thường các em học sinh coi Tin học là môn phụ không quan trọng nên nhiều em chủ quan không dành nhiều thời gian để học dẫn đến khó hiểu bài và không làm được bài tập Đây cũng là lí do mà nhiều

em khi vào đội tuyển HS giỏi lại xin ra vì khó bắt nhịp được với lượng lớn kiến thức hoặc đi thi HS giỏi Tin học trẻ kết quả chưa cao

Với những lý do trên khiến tôi quyết định chọn đề tài: “Hướng dẫn HS lớp

8 giải bài tập mảng một chiều trong Pascal” nhằm nâng cao chất lượng môn

Tin học nói chung và chất lượng đội tuyển HS giỏi các cấp nói riêng

1 2 Mục đích nghiên cứu

Nhằm giúp HS nắm chắc cấu trúc câu lệnh về mảng một chiều, cách hoạt động của câu lệnh, từ đó nâng cao về mặt kiến thức cũng như mô tả được thuật toán và viết chương trình cho bài toán Đảm bảo cho HS vững kiến thức để có

đủ khả năng dự thi các kỳ thì Tin học trẻ cấp Huyện, cấp Tỉnh và cấp Quốc gia

1.3 Đối tượng nghiên cứu

Đề tài này nghiên cứu các giải pháp để hướng dẫn HS lớp 8 giải bài tập

mảng một chiều trong Pascal

Từ việc nghiên cứu vận dụng đề tài, rút ra bài học kinh nghiệm góp phần nâng cao chất lượng trong công tác dạy học môn Tin học tại Trường THCS Lý Thường Kiệt nói riêng và chất lượng đội tuyển HS giỏi của huyện Hà Trung

1.4 Phương pháp nghiên cứu

1.4.1 Phương pháp phân tích tổng kết kinh nghiệm

Từ thực tiễn dạy học bồi dưỡng HS giỏi nhiều năm, tôi đúc rút thành cẩm nang cho riêng mình trong quá trình giảng dạy về cách luyện cho HS cách tự học để nắm vững một chuyên đề, luyện cho HS cách làm bài thi trên máy tính

1.4.2 Phương pháp thực nghiệm khoa học

Đưa kinh nghiệm của bản thân về phương pháp hướng dẫn HS giỏi lớp 8 giải bài tập mảng một chiều để đánh giá, rút kinh nghiệm trong thời gian tiếp theo

Trang 3

1.4.3 Phương pháp phân tích và tổng hợp lý thuyết

Nghiên cứu nhiều tài liệu tham khảo có liên quan đến phương pháp giải bài tập mảng một chiều giúp tôi tìm hiểu sâu sắc về vấn đề này Qua đó tổng hợp để tạo ra phương pháp giải quyết các dạng bài tập về câu lệnh này một cách khoa học, hiệu quả nhất cho học sinh

1.4.4 Phương pháp phân loại và hệ thống hóa lý thuyết

Sau khi phân tích và tổng hợp lý thuyết tôi đã dùng phương pháp phân loại,

hệ thống nhằm khái quát lên thành các loại, dạng bài tập theo mỗi chuyên đề để hướng dẫn học sinh học

1.4.5 Phương pháp điều tra

Bản thân đã tiến hành khảo sát bằng cách cho HS làm bài kiểm tra chủ yếu tập trung các việc giải bài tập mảng một chiều Từ đó điều tra được khả năng của HS đối với việc tiếp cách giải bài tập một cách tối ưu nhất

1.4.6 Phương pháp thực nghiệm sư phạm:

Đề tài này cũng được áp dụng cho khóa học này Từ đó tôi tổng kết và rút kinh nghiệm cho khóa học sau

2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận của sáng kiến kinh nghiệm

Ở trường THCS chúng ta không chú trọng học chuyên sâu về ngôn ngữ lập trình Trong khi đó chúng ta thấy học lập trình là tập trung rèn luyện cho

HS kĩ năng tư duy logic, tư duy hệ thống và sáng tạo để giải quyết những vấn

đề trong Tin học mà đây còn là những kĩ năng vô cùng quan trọng để giải quyết nhiều vấn đề trong cuộc sống

Học Pascal giúp cho ta hiểu được cách làm việc của máy tính, cách giao tiếp để ra lệnh cho máy tính làm việc theo sự điều khiển của con người thông qua ngôn ngữ lập trình Các em có thể tạo ra các chương trình thú vị bằng cách

sử dụng các câu lệnh Pascal Cũng giống như những môn học khác như: Toán học, Vật lý, Hóa học … khi các em đã thực sự hiểu và yêu thích bộ môn Tin học các em sẽ tìm thấy nhiều niềm vui, sự đam mê khi tìm hiểu và khám phá những điều mới mẻ nhưng đầy hấp dẫn trong bộ môn tưởng chừng như khô khan này

Vì vậy, tôi chọn đề tài: “Hướng dẫn HS lớp 8 giải bài mảng một chiều trong Pascal” với mong muốn đóng góp một phần nhỏ vào việc nâng cao chất

lượng Tin học trong nhà trường và hơn nữa và nâng cao chất lượng HS giỏi trong kỳ thi Tin học trẻ cấp Tỉnh, cấp Quốc gia

2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm:

Lập trình là môn học hướng dẫn học sinh cách giải các bài toán bằng cách viết chương trình trên máy tính Đây là môn học mới đối với học sinh nên phần đông các em không nắm bắt được kiến thức để vận dụng vào giải bài tập

Mặt khác, theo kinh nghiệm giảng dạy tôi thấy học sinh khi học đến mảng

một chiều các em đều thấy rất khó: khó hình dung, khó không hiểu cách thực

hiện của lệnh, học cứ cảm giác mơ mơ màng màng dẫn đến ngại học và ngại

thực hành (do không biết vận dụng lệnh vào giải các bài tập nên khi test chương

Trang 4

trình là máy báo lỗi, không chạy được và đặc biệt là không biết sửa lỗi) Với nhiều năm giảng dạy tôi đã rút ra được một số kinh nghiệm nho nhỏ khi dạy

xong mảng một chiều trong Turbo Pascal mà tôi cảm thấy học sinh tiếp thu bài

rất tốt, biết vận dụng vào giải bài tập một cách linh hoạt và đạt kết quả cao trong các kỳ thi

2.3 Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết vấn đề

2.3.1 Các giải pháp:

Để nâng cao chất lượng HS tôi phải trăn trở, học hỏi và nghiên cứu rất nhiều

Cụ thể: Đổi mới phương pháp dạy học khi học sinh học mảng một chiều là:

* Giải pháp 1: Cung cấp cho HS những kiến thức cơ bản của mảng một chiều

Tôi chú trọng rèn luyện cho học sinh biết khai thác sách giáo khoa và các tài liệu học tập, biết cách tự tìm lại những kiến thức đã có, suy luận để tìm tòi và phát hiện kiến thức mới Định hướng cho HS cách tư duy như phân tích, tổng hợp, đặc biệt hoá, khái quát hoá, tương tự, quy lạ về quen… để dần hình thành

và phát triển tiềm năng sáng tạo Mảng một chiều tôi nhấn mạnh cho HS những kiến thức cơ bản như sau:

- Dãy số và biến mảng

- Khai báo trực tiếp mảng một chiều

* Giải pháp 2: Rèn luyện cho học sinh khả năng tư duy, sáng tạo và phân tích thuật toán

- Với giải pháp 2 tôi hướng dẫn học sinh cách giải các bài tập như Toán học

bằng cách nói và viết Từ đó yêu cầu học sinh đưa ra nhiều thuật toán ứng với mỗi bài tập Rồi chọn thuật toán tối ưu nhất cho bài tập đó

* Giải pháp3: Phân dạng bài tập, phương pháp giải

+ Với mỗi dạng bài tập tôi đưa ra rất nhiều ví dụ để học sinh hiểu và nắm chắc về cú pháp câu lệnh, học sinh làm quen với rất nhiều dạng bài tập có sử dụng mảng một chiều Các bài tập cho học sinh tôi hướng dẫn học sinh cách giải như Toán học bằng cách nói và viết Sau đó mới áp dụng ngôn ngữ lập trình vào giải bài tập Ngoài ra, tôi còn ra rất nhiều bài tập về nhà để cho học sinh luyện thêm về mảng một chiều

* Giải pháp 4: Rèn kĩ năng giải bài tập trên máy tính

- Thực hành là mức độ cao nhất của tư duy đòi hỏi mỗi học sinh phải biết huy động gần hết vốn kiến thức của mình khi làm việc với máy tính Mỗi khi thực hành nhất là khi thi lập trình giải toán đòi hỏi học sinh phải biết vận dụng toàn bộ những hiểu biết, huy động sức nhớ của bộ não để tìm ra cách giải nhanh nhất, tối ưu nhất Để học sinh có được tâm thế bình tĩnh trong khi thi thì đòi hỏi học sinh phải nắm vững các kiến thức cơ bản về cú pháp lệnh, khi học phải được làm quen với nhiều dạng bài toán về mảng một chiều Có thế thì khi gặp phải dạng bài toán nào đó học sinh sẽ không bị lúng túng và có thể hình dung ra cách giải một cách nhanh chóng

- Với mỗi bài tập sau khi đã đưa ra được thuật toán tối ưu Tôi yêu cầu học sinh áp dụng ngôn ngữ lập trình vào giải bài tập và thực hành ngay trên máy

Trang 5

Trong quá trình thực hành nếu gặp lỗi thì học sinh phải tự sửa các lỗi đó, trường hợp sửa lỗi không được có thể nhờ bạn hoặc cô giáo giúp Khi chương trình chạy hoàn chỉnh tôi yêu cầu các em ghi các bài tập đã chạy được trên máy ra một quyển vở riêng nhằm giúp các em khắc sâu thêm thuật toán cũng như cách viết chương trình

- Với mỗi dạng bài tập tôi ra nhiều bài tập tương tự, bài tập nâng cao để giao bài về nhà cho học sinh để học sinh khắc sâu hơn kiến thức đã được học

- Sau mỗi bài tập thực hành tôi đều nhận xét, củng cố và phát triển bài toán

để có bài toán mới Như vậy học sinh sẽ có tư duy linh hoạt và sáng tạo

* Giải pháp 5: Cho HS tiếp cận với đề thi học sinh giỏi cấp Tỉnh qua các năm

- Phân dạng bài tập qua các đề thi

- Cho học sinh làm các bài tập của các đề thi những năm trước để các em tập làm quen và không còn bỡ ngỡ khi thi Với mỗi bài tập tôi chấm điểm cho học sinh sau khi học sinh hoàn thành việc chạy chương trình trên máy và chỉ ra sai lầm cũng như nguyên nhân dẫn đến sai lầm đó (nếu có) -> biện pháp khắc phục

để học sinh nắm chắc từng phần kiến thức và làm chặt chẽ từng dạng bài tập

* Giải pháp 6: Cho học sinh làm bài kiểm tra thử

- Ra đề kiểm tra cho học sinh làm bài tập trên máy tính, tôi bấm giờ và chấm điểm Đề có các mức độ nhận thức: nhận biết thông hiểu vận dụng vận dụng cao Từ đó HS rèn được kỹ năng: phân tích tổng hợp đánh giá -thực hành

Với phương pháp này tôi đã nâng cao được chất lượng môn Tin học và qua

đó nâng cao được chất lượng HS giỏi qua các kỳ thi Tin học trẻ Do vậy, qua sáng kiến kinh nghiệm này tôi mạnh dạn đưa ra một phương pháp nhỏ để các bạn đồng nghiệp tham khảo góp phần đưa chất lượng môn Tin học của Huyện – Tỉnh ngày càng nâng lên

2.3.2 Các biện pháp tổ chức thực hiện các giải pháp

2.3.2.1 Dãy số và biến mảng

Để khảo sát mức độ phân hóa giàu nghèo của một địa phương, người ta đã tiến hành thu thập thông tin về thu nhập của từng hộ gia đình trong địa phương

đó Cần viết chương trình tính mức thu nhập trung bình của các hộ gia đình trong địa phương và độ chênh lệnh giữa mức thu nhập của từng hộ gia đình so với mức thu nhập trung bình

Việc giải bài toán trên gồm 2 bước cơ bản:

- Tính thu nhập trung bình bằng cách tính tổng thu nhập của tất cả các hộ gia đình rồi chia cho tổng số hộ

- Lần lượt lấy thu nhập của từng hộ trừ đi giá trị trung bình ở bước 1 để tính

độ lệch giữa mức thu nhập của hộ đó so với mức thu nhập trung bình

Giả sử số hộ gia đình được khảo sát là 50 Đoạn chương trình sau có thể giúp chúng ta giải quyết bài toán trên:

Var a, thunhaptb: Real; i:integer;

Begin thunhaptb:=0;

For i:=1 to 50 do

Trang 6

Write(‘Thu nhap cu gia dinh thu ‘,i); readln(a);

thunhaptb:=thunhaptb+a;

end;

thunhaptb:=thunhaptb/50;

For i:=1 to 50 do

Begin

Write(‘Thu nhap cu gia dinh thu ‘,i); readln(a);

Writeln(‘Do lech so voi thu nhap tb la:’,a-thunhaptb); End;

Readln;

End

Qua đoạn chương trình này ta thấy tại mỗi thời điểm một biến chỉ lưu được một giá trị duy nhất nên trong đoạn chương trình trên, mỗi khi cần tới thu nhập của hộ gia đình nào ta lại phải thực hiện câu lệnh Readln(a) để nhập mức thu nhập của hộ đó vào biến a Mà thao tác nhập mức thu nhập của các hộ gia đình từ bàn phím chiếm phần lớn thời gian trong quá trình thực hiện đoạn chương trình trên, mà ta lại phải thực hiện công việc đó hai lần

Để chỉ phải nhập dữ liệu một lần, ta có phải khai báo nhiều biến, mỗi biến

để lưu trữ thu nhập của một hộ gia đình

Ví dụ: Var thunhap1, thunhap2, thunhap3,….: real;

Readln(thunhap1); Readln(thunhap2); Readln(thunhap3);… Như vậy địa phương cần khảo sát bao nhiêu hộ gia đình thì phải khai báo bấy nhiêu biến và câu lệnh nhập mức thu nhập - một công việc không hề thú vị

Để tránh phải thực hiện điều tương tự như vậy, ngôn ngữ lập trình Pascal đã đưa ra một kiểu dữ liệu đặc biệt - kiểu mảng để lưu trữ nhiều dữ liệu liên quan đến nhau (như thunhap1, thunhap2,….ở trên) bằng một biến duy nhất và đánh

“số thứ tự” cho các dữ liệu đó giúp việc xử lý dữ liệu ấy đơn giản hơn

Dữ liệu kiểu mảng là tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều

có chung một kiểu dữ liệu, gọi là kiểu của phần tử Việc sắp xếp thứ tự được thực hiện bằng cách gán cho mỗi phần tử một chỉ số

thunhap1 thunhap2 Thunhap3 thunhapk

Các phần tử có thể có cùng kiểu dữ liệu bất kì (như: integer, real, char,…) Khi khai báo một biến có kiểu dữ liệu là kiểu mảng, biến đó được gọi là biến mảng Khi sử dụng biến mảng thực chất chúng ta sắp xếp theo chỉ số các biến có cùng kiểu dưới một tên duy nhất

Giá trị của biến mảng là một mảng, tức một dãy số (số nguyên, số thực) có thứ tự, mỗi số là một giá trị của biến thành phần tương đương

Trang 7

2.3.2.2 Khai báo trực tiếp mảng một chiều

a Cú pháp:

Var tên_biến_mảng: array[<chỉ số đầu>…<chỉ số cuối>] of kiểu dữ liệu;

Trong đó: - Chỉ số đầu, chỉ số cuối là hai số nguyên thỏa mãn chỉ số đầu ≤chỉ số cuối

- Kiểu dữ liệu là một kiểu bất kỳ (trừ kiểu File) như: kiểu số thực, số nguyên,…

VD: M: array[1 50] of Integer;

A: array[1 100] of Integer;

ten: array[1 60] of string[20];

b Cách truy cập đến thành phần của mảng:

Tên_biến_mảng[chỉ số của mảng]

Trong đó: Chỉ số của mảng là vị trí của số đó của mảng Các phần tử phân biệt với nhau thông qua biến chỉ số

VD:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Để truy cập đến phần tử thứ 5: M[5]:=-4; A[4]:=20;

Có thể gán 1 biến mảng này cho một biến mảng khác cùng kiểu dữ liệu: VD: M[5]:=A[4];

2.3.2.3 Các dạng bài tập

2.3.2.3.1 Dạng 1: Nhập xuất và tính tổng các phần tử trong mảng.

Ví dụ: A: 1 5 6 7 4

Kết quả: Tong S = 23

Hướng dẫn: Để giải quyết bài toán cần phải đảm bảo các vấn đề:

- Nhập mảng Các thao tác theo yêu cầu:

(1) Nhập số n

(2) Tiến hành lặp (từ 1 đến n) và nhập cho các giá trị Ai trong mảng

- Tính tổng các phần tử cho một mảng A:

(1) Khai báo và khởi tạo tổng S là 0

(2) Sử dụng một vòng lặp (từ 1 đến n để duyệt qua tất cả các giá trị Ai) để tính cộng dồn giá trị của Ai vào tổng S

- Xuất mảng Công việc đơn giản là sử dụng vòng lặp từ 1 đến N để in ra các giá trị Ai cho mảng

VD1: Nhập n số nguyên từ bàn phím vào mảng

a Tính tổng các số trong mảng.

b Đưa các phần tử của mảng ra màn hình.

Trang 8

Chương trình:

Var i, n, S: integer;

A: array[1 50] of Integer;

Begin {nhập các phần tử vào mảng}

Write(‘Nhap so phan tu cua mang n=’); Readln(n);

For i:=1 to n do

Begin write(‘Nhap phan tu thu ‘, i,’ =’); Readln(A[i]); End;

S:=0; {tính tổng}

For i:=1 to n do S:=S+A[i];

Writeln(‘Tong cua cac phan tu trong mang la:’,S);

Writeln(‘Cac phan tu cua mang la:’); {Đưa cac phần tử ra màn hình} For i:=1 to n do Write(A[i], ‘ ‘);

Readln;

End

VD2 : Lập trình nhập một dãy n số thực

a Tính TBC các số trong dãy

b Đếm xem có bao nhiêu số dương, tính tổng của chúng.

Hướng dẫn: Để giải quyết bài toán cần phải đảm bảo các vấn đề:

a- Nhập mảng Các thao tác theo yêu cầu:

(1) Nhập số n

(2) Tiến hành lặp (từ 1 đến n) và nhập cho các giá trị Ai trong mảng

b- Tính trung bình cộng các phần tử cho một mảng A:

(1) Khai báo và khởi tạo tổng S là 0

(2) Sử dụng một vòng lặp (từ 1 đến n để duyệt qua tất cả các giá trị Ai) để tính cộng dồn giá trị của Ai vào tổng S

(3) Tính trung bình cộng TBC =S/n (lấy tổng S chia cho n phần tử)

(4) Thông báo kết quả TBC

c- Đếm xem có bao nhiêu số dương, tính tổng của chúng:

(1) Khai báo và khởi tạo biến đếm d=0

(2) Sử dụng một vòng lặp (từ 1 đến n để duyệt qua tất cả các giá trị Ai)

Nếu phần tử Ai >0 thì tăng biến đếm d lên 1 đơn vị (3) Thông báo kết quả biến đếm d

Chương trình:

Var i, n,d: integer; S, TBC:real;

A: array[1 50] of Real;

Begin {nhập các phần tử vào mảng}

Write(‘Nhap so phan tu cua mang n=’); Readln(n);

For i:=1 to n do

Begin write(‘Nhap phan tu thu ‘, i,’ =’); Readln(A[i]); End; S:=0; {tính tổng}

For i:=1 to n do S:=S+A[i];

TBC:=S/n;

Writeln(‘Trung binh cong cua cac phan tu trong mang la:’,TBC:3:1);

Trang 9

d:=0; {đếm số phần tử dương trong dãy số}

For i:=1 to n do

If A[i]>0 then d:=d+1;

Writeln(‘Day tren so so phan tu duong la:’,d);

Readln;

End.

Bài tập:

Bài 1: Đọc vào n số nguyên từ bàn phím.

a Tính tổng và trung bình cộng các số đã cho

b Tính tổng các số lẻ và trung bình cộng các số chẵn

c Tính trung bình cộng các số thuộc đoạn [20,200]

Bài 2: Lập trình đọc từ bàn phím dãy n số nguyên

a Đếm xem trong dãy có bao nhiêu số lẻ

b Đưa ra màn hình các số lẻ có trong dãy

Bài 3: Đếm số lần xuất hiện của giá trị X trong mảng A

Ví dụ: A: 1 5 6 7 4 1 5 5 1 1

X: 1

Kết quả: So lan xuat hien X la 4

2.3.2.3.2 Dạng 2: Sắp xếp các phần tử trong mảng theo chiều tăng hoặc

giảm dần

VD: Lập trình sắp xếp dãy số nguyên theo chiều tăng dần Đưa dãy số đã sắp xếp ra màn hình

Ý tưởng: - Nhập n, nhập các phần tử cho mảng a

- Dùng 2 vòng For lồng nhau:

Vòng For 1:Dùng biến i chạy từ 1 đến n-1

Vòng For 2: Dùng biến j chạy từ i+1 đến n

Nếu a[i]>a[j] thì đổi chỗ a[i] cho a[j]

- Đưa ra màn hình dãy số đã sắp xếp

Chương trình:

Var i, n, j, tg: integer;

A: array[1 50] of Integer;

Begin

Write(‘Nhap so phan tu cua mang n=’); Readln(n);

For i:=1 to n do

Begin write(‘Nhap phan tu thu ‘, i,’ =’); Readln(A[i]); End;

For i:=1 to n-1 do

For j:=i+1 to n do

If a[i]>a[j] then

Begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; end;

Writeln(‘Day da sap xep la:’);

For i:=1 to n do Write(a[i],’ ‘);

Readln;

End

Trang 10

Bài tập:

Bài 1: Lập trình sắp xếp dãy số nguyên theo chiều giảm dần Đưa dãy số đã sắp

xếp ra màn hình

Ý tưởng: - Nhập n, nhập các phần tử cho mảng a

- Dùng 2 vòng For lồng nhau:

Vòng For 1:Dùng biến i chạy từ 1 đến n-1

Vòng For 2: Dùng biến j chạy từ i+1 đến n

Nếu a[i]<a[j] thì đổi chỗ a[i] cho a[j]

- Đưa ra màn hình dãy số đã sắp xếp

Bài 2: Lập trình đọc dãy n số nguyên, sau đó làm các việc sau:

a Sắp xếp các số chẵn lên đầu dãy

b Sắp xếp các số chia hết cho 5 lên đầu dãy

c Sắp xếp các số lẻ và nhỏ hơn 10 xuống cuối dãy

2.3.2.3.3 Dạng 3: Tìm giá trị lớn nhất và nhỏ nhất của dãy số.

VD: Viết chương trình tìm giá trị lớn nhất và nhỏ nhất của một mảng chứa các số nguyên gồm N phần tử.

Ý tưởng:

- Cho số lớn nhất và số nhỏ nhất là số đầu tiên: Max:=a[1]; Min:=a[1];

- Duyệt qua các phần tử a[i], với i chạy từ 2 tới N:

Nếu a[i]>Max thì thay Max:=a[i];

Nếu a[i]<Min thì thay Min:=a[i];

Chương trình:

Var i, n, Max,Min: integer;

A: array[1 50] of Integer;

Begin

Write(‘Nhap so phan tu cua mang n=’); Readln(n);

For i:=1 to n do

Begin write(‘Nhap phan tu thu ‘, i,’ =’); Readln(A[i]); End;

Max:=a[1]; Min:=a[1];

For i:=2 to n do

Begin If Max<a[i] then Max:=a[i];

If Min>a[i] then Min:=a[i];

End;

Writeln(‘So lon nhat la:’,Max);

Writeln(‘So nho nhat la:’,Min);

Readln;

End

Bài tập:

Bài 1: Nhập vào một mảng gồm n số nguyên và số nguyên k Tìm và đưa ra

màn hình:

a.Giá trị lớn nhất của mảng, vị trí lớn nhất đó

b Gía trị nhỏ nhất của màng, vị trí

Ngày đăng: 09/06/2022, 22:14

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w