1. Con người ra lệnh cho máy tính như thế nào?
Chúng ta đã biết rằng máy tính là công cụ trợ giúp con người để xử lí thông tin một cách rất hiệu quả. Tuy nhiên, máy tính thực chất chỉ là một thiết bị điện tử vô tri vô giác. Để máy tính có thể thực hiện một công việc theo mong muốn của mình, con người phải đưa ra những chỉ dẫn thích hợp cho máy tính.
Khi nháy đúp chuột lên biểu tượng của một phần mềm trên màn hình nền, phần mềm sẽ được khởi động. Bằng cách đó ta đã cho máy tính những chỉ dẫn, nói cách khác, đã ra lệnh cho máy tính khởi động phần mềm.
Khi soạn thảo văn bản, ta gõ một phím chữ (chẳng hạn phím chữ a), chữ tương ứng sẽ xuất hiện trên màn hình. Như vậy ta cũng đã ra lệnh cho máy tính (in chữ lên màn hình).
Khi thực hiện lệnh sao chép một phần văn bản từ vị trí này sang vị trí khác, thực chất ta đã yêu cầu máy tính thực hiện liên tiếp nhiều lệnh, trong đó có lệnh sao chép nội dung phần văn bản vào bộ nhớ của máy tính và lệnh sao chép nội dung có trong bộ nhớ vào vị trí mới trên văn bản.
Như vậy, để chỉ dẫn máy tính thực hiện một công việc nào đó, con người đưa cho máy tính một hoặc nhiều lệnh, máy tính sẽ lần lượt thực hiện các lệnh đó.
2. Ví dụ: rô-bốt nhặt rác
Rô-bốt (hay người máy) là một loại máy có thể tự động thực hiện được một số công việc thông qua sự điều khiển của con người. Chúng ta sẽ tìm hiểu cách ra lệnh cho máy tính thông qua một ví dụ về rô-bốt.
Giả sử ta có một rô-bốt có thể thực hiện được các thao tác cơ bản như tiến một bước, quay phải, quay trái, nhặt rác và bỏ rác vào thùng. Hình 1 dưới đây mô tả vị trí của rô-bốt, cọng rác và thùng rác. Ta cần ra các lệnh thích hợp để chỉ dẫn rô-bốt di chuyển từ vị trí hiện thời, nhặt rác và bỏ vào thùng rác để ở nơi quy định.
Phần 1 Lập trình đơn giản Bài 1. Máy tính và chương trình máy tính 1. Con người ra lệnh cho máy tính như thế nào? Chúng ta đã biết rằng máy tính là công cụ trợ giúp con người để xử lí thông tin một cách rất hiệu quả. Tuy nhiên, máy tính thực chất chỉ là một thiết bị điện tử vô tri vô giác. Để máy tính có thể thực hiện một công việc theo mong muốn của mình, con người phải đưa ra những chỉ dẫn thích hợp cho máy tính. Khi nháy đúp chuột lên biểu tượng của một phần mềm trên màn hình nền, phần mềm sẽ được khởi động. Bằng cách đó ta đã cho máy tính những chỉ dẫn, nói cách khác, đã ra lệnh cho máy tính khởi động phần mềm. Khi soạn thảo văn bản, ta gõ một phím chữ (chẳng hạn phím chữ a), chữ tương ứng sẽ xuất hiện trên màn hình. Như vậy ta cũng đã ra lệnh cho máy tính (in chữ lên màn hình). Khi thực hiện lệnh sao chép một phần văn bản từ vị trí này sang vị trí khác, thực chất ta đã yêu cầu máy tính thực hiện liên tiếp nhiều lệnh, trong đó có lệnh sao chép nội dung phần văn bản vào bộ nhớ của máy tính và lệnh sao chép nội dung có trong bộ nhớ vào vị trí mới trên văn bản. Như vậy, để chỉ dẫn máy tính thực hiện một công việc nào đó, con người đưa cho máy tính một hoặc nhiều lệnh, máy tính sẽ lần lượt thực hiện các lệnh đó. 2. Ví dụ: rô-bốt nhặt rác Rô-bốt (hay người máy) là một loại máy có thể tự động thực hiện được một số công việc thông qua sự điều khiển của con người. Chúng ta sẽ tìm hiểu cách ra lệnh cho máy tính thông qua một ví dụ về rô-bốt. Giả sử ta có một rô-bốt có thể thực hiện được các thao tác cơ bản như tiến một bước, quay phải, quay trái, nhặt rác và bỏ rác vào thùng. Hình 1 dưới đây mô tả vị trí của rô-bốt, cọng rác và thùng rác. Ta cần ra các lệnh thích hợp để chỉ dẫn rô-bốt di chuyển từ vị trí hiện thời, nhặt rác và bỏ vào thùng rác để ở nơi quy định. Hình 1. Rô-bốt "nhặt rác" Nếu thực hiện theo các lệnh sau đây, rô-bốt sẽ hoàn thành tốt công việc: Tiến 2 bước; Quay trái, tiến 1 bước; Nhặt rác; Quay phải, tiến 3 bước; Quay trái, tiến 2 bước; Bỏ rác vào thùng. Giả sử các lệnh trên được viết và lưu trong rô-bốt với tên "Hãy nhặt rác". Khi đó ta chỉ cần ra lệnh "Hãy nhặt rác", các lệnh đó sẽ điều khiển rô-bốt tự động thực hiện lần lượt các lệnh nói trên. 3. Viết chương trình - ra lệnh cho máy tính làm việc Về thực chất, việc viết các lệnh để điều khiển rô-bốt trong ví dụ nói trên chính là viết chương trình. Tương tự, để điều khiển máy tính làm việc, chúng ta cũng viết chương trình máy tính. Theo nghĩa đó, chương trình máy tính là một dãy các lệnh mà máy tính có thể hiểu và thực hiện được. Mặc dù chương trình chứa các lệnh riêng lẻ, nhưng bản thân tên chương trình cũng được xem như một lệnh, ta có thể yêu cầu máy tính thực hiện bằng cách gọi tên của nó. Như ở ví dụ trên, tên câu lệnh gộp chung "Hãy nhặt rác" trở thành tên của chương trình. Khi thực hiện chương trình, máy tính sẽ thực hiện các lệnh có trong chương trình một cách tuần tự, nghĩa là thực hiện xong một lệnh sẽ thực hiện lệnh tiếp theo, từ lệnh đầu tiên đến lệnh cuối cùng. Trở lại ví dụ về rô-bốt nhặt rác, chương trình có thể có các lệnh như sau: Hình 2. Ví dụ về chương trình Tại sao cần viết chương trình? Khi gõ một phím hoặc nháy chuột, thực chất ta đã "ra lệnh" cho máy tính. Tuy nhiên, trong thực tế các công việc con người muốn máy tính thực hiện rất đa dạng và phức tạp. Một lệnh đơn giản không đủ để chỉ dẫn cho máy tính. Vì thế việc viết nhiều lệnh và tập hợp lại trong một chương trình giúp con người điều khiển máy tính một cách đơn giản và hiệu quả hơn. 4. Chương trình và ngôn ngữ lập trình Trong mục trước, chúng ta đã thử tưởng tượng ra một chương trình gồm các lệnh tiếng Việt. Để thực hiện được công việc, máy tính phải hiểu các lệnh được viết trong chương trình. Vậy máy tính có thể hiểu các lệnh tiếng Việt đó không? Ngoài ra, ta có thể ra lệnh cho máy tính bằng cách gõ các phím bất kì hoặc bằng giọng nói được không? Lủng củng Chúng ta đã biết rằng để máy tính có thể xử lí, thông tin đưa vào máy phải được chuyển đổi thành dạng dãy bit (dãy các số chỉ gồm 0 hoặc 1). Như vậy, khác với con người trao đổi thông tin bằng ngôn ngữ tự nhiên (tiếng Việt, tiếng Anh,...), máy tính "nói" và "hiểu" bằng một ngôn ngữ riêng, được gọi là ngôn ngữ máy. Khi nói chuyện với người bạn chỉ biết tiếng Anh, ta chỉ có thể nói tiếng Anh hoặc cần một người phiên dịch để dịch tiếng Việt sang tiếng Anh và ngược lại. Tương tự, để máy tính có thể hiểu được, con người cũng phải dùng ngôn ngữ máy khi chỉ dẫn cho máy tính. Ngoài ra, máy tính cũng chỉ có thể hiểu được một số câu lệnh nhất định mà thôi. Có ý gì? Hình 3 Việc viết chương trình bằng ngôn ngữ máy rất khó khăn và mất nhiều thời gian, công sức. Người ta mong muốn có thể sử dụng được các từ có nghĩa, dễ hiểu và dễ nhớ để viết các câu lệnh thay cho các dãy bit khô khan. Các ngôn ngữ lập trình đã ra đời để phục vụ mục đích đó. Ngôn ngữ lập trình là ngôn ngữ dùng để viết các chương trình máy tính. Như vậy, để tạo chương trình máy tính, chúng ta phải viết chương trình theo một ngôn ngữ lập trình nào đó. Có thể nói, ngôn ngữ lập trình là công cụ giúp để tạo ra các chương trình máy tính. Tuy nhiên, máy tính vẫn chưa thể hiểu được các chương trình được viết bằng ngôn ngữ lập trình. Chương trình còn cần được chuyển đổi sang ngôn ngữ máy bằng một chương trình dịch tương ứng: Hình 4 Tóm lại, việc tạo ra chương trình máy tính thực chất gồm hai bước sau: (1) Viết chương trình bằng ngôn ngữ lập trình; (2) Dịch chương trình thành ngôn ngữ máy để máy tính hiểu được. Hình 5 Kết quả nhận được sau bước (1) là danh sách các lệnh được lưu thành một tệp văn bản trong máy tính; còn kết quả của bước (2) là một tệp có thể thực hiện trên máy tính. Các tệp kết quả đó được gọi chung là chương trình. Người ta thường viết chương trình bằng một chương trình soạn thảo (tương tự như chương trình soạn thảo văn bản). Chương trình soạn thảo và chương trình dịch thường được kết hợp vào một phần mềm, được gọi là môi trường lập trình. Ví dụ, với ngôn ngữ lập trình Pascal có hai môi trường làm việc phổ biến là Turbo Pascal và Free Pascal. Có rất nhiều ngôn ngữ lập trình khác nhau. Có thể kể tên một số ngôn ngữ lập trình phổ biến hiện nay như C, Java, Basic, Pascal,... Mỗi ngôn ngữ lập trình được tạo ra với định hướng sử dụng trong một số lĩnh vực cụ thể và có lịch sử phát triển, điểm mạnh cũng như điểm yếu riêng. GHI NHớ Con người chỉ dẫn cho máy tính thực hiện công việc thông qua các lệnh. Viết chương trình là hướng dẫn máy tính thực hiện các công việc hay giải một bài toán cụ thể. Ngôn ngữ dùng để viết các chương trình máy tính được gọi là ngôn ngữ lập trình. Câu hỏi và bài tập Trong ví dụ về rô-bốt, nếu thay đổi thứ tự của lệnh 1 và lệnh 2 trong chương trình, rô-bốt có thực hiện được công việc nhặt rác không? Hãy xác định vị trí mới của rô-bốt sau khi thực hiện xong lệnh "Hãy nhặt rác". Em hãy đưa ra hai lệnh để rô-bốt trở lại vị trí ban đầu. Hãy cho biết lí do cần phải viết chương trình để điều khiển máy tính. Tại sao người ta phải tạo ra các ngôn ngữ lập trình trong khi có thể điều khiển máy tính bằng ngôn ngữ máy? Chương trình dịch làm gì? Bài 2. Làm quen với CHƯƠNG TRìNH Và Ngôn ngữ lập trình 1. Ví dụ về chương trình Ví dụ 1. Hình 6 dưới đây minh hoạ một chương trình đơn giản được viết bằng ngôn ngữ lập trình Pascal. Sau khi dịch, kết quả chạy chương trình là dòng chữ "Chao Cac Ban" được in ra trên màn hình. Hình 6 Chương trình trên chỉ có năm dòng lệnh. Mỗi dòng lệnh gồm các cụm từ khác nhau được tạo từ các chữ cái. Trong thực tế có những chương trình có thể có đến hàng nghìn hoặc thậm chí hàng triệu dòng lệnh. Trong các phần tiếp theo chúng ta sẽ tìm hiểu các câu lệnh được viết như thế nào. 2. Ngôn ngữ lập trình gồm những gì? Trước hết, chúng ta thấy rằng các câu lệnh được viết từ những chữ cái nhất định. Các chữ cái này nằm trong bảng chữ cái của ngôn ngữ lập trình. Giống như ngôn ngữ tự nhiên, mọi ngôn ngữ lập trình đều có bảng chữ cái riêng. Các câu lệnh chỉ được viết từ các chữ cái của bảng chữ cái đó. Bảng chữ cái của các ngôn ngữ lập trình thường gồm các chữ cái tiếng Anh và một số kí hiệu khác như dấu phép toán (+, -, *, /,...), dấu đóng mở ngoặc, dấu nháy,... Nói chung, các kí tự có trên hầu hết các phím của bàn phím máy tính đều có mặt trong bảng chữ cái của mọi ngôn ngữ lập trình. Mỗi câu lệnh trong chương trình trên gồm các từ và các kí hiệu được viết theo một quy tắc nhất định. Các quy tắc này quy định cách viết các từ và thứ tự của chúng. Chẳng hạn, trong ví dụ trên các từ được cách nhau bởi một hoặc nhiều dấu cách, một số câu lệnh được kết thúc bằng dấu chấm phẩy (;), dòng lệnh thứ tư có cụm từ nằm trong cặp dấu ngoặc đơn,... Nếu câu lệnh bị sai quy tắc, chương trình dịch sẽ nhận biết được và thông báo lỗi. Mặt khác, mỗi câu lệnh đều có một ý nghĩa nhất định. ý nghĩa của câu lệnh xác định các thao tác mà máy tính cần thực hiện và kết quả đạt được. Câu lệnh đầu tiên trong ví dụ trên là câu lệnh đặt tên (khai báo) cho chương trình, câu lệnh thứ tư chỉ thị cho máy tính in ra màn hình dòng chữ "Chao Cac Ban",... Tóm lại, về cơ bản ngôn ngữ lập trình gồm bảng chữ cái và các quy tắc để viết các câu lệnh có ý nghĩa xác định, cách bố trí các câu lệnh,... sao cho có thể tạo thành một chương trình hoàn chỉnh và thực hiện được trên máy tính. 3. Từ khoá và tên Trong chương trình trên, ta thấy có các từ như program, uses, begin, end,... Đó là những từ khoá. Mỗi ngôn ngữ lập trình đều có một số từ khoá nhất định. Từ khoá của một ngôn ngữ lập trình là những từ dành riêng, không được dùng các từ khoá này cho bất kì mục đích nào khác ngoài mục đích sử dụng do ngôn ngữ lập trình quy định. Trong ví dụ trên, program là từ khoá dùng để khai báo tên chương trình, uses là từ khoá khai báo các thư viện, các từ khoá begin và end dùng để thông báo cho ngôn ngữ lập trình biết bắt đầu và kết thúc phần thân chương trình. Ngoài các từ khoá, chương trình trong ví dụ 1 còn có các từ như CT_Dau_tien, crt,... Đó là các tên được dùng trong chương trình. Khi viết chương trình để giải các bài toán, ta thường thực hiện tính toán với những đại lượng (ví dụ như so sánh chiều cao, tính điểm trung bình,...) hoặc xử lí các đối tượng khác nhau. Các đại lượng và đối tượng này đều phải được đặt tên. Ví dụ tên CT_Dau_tien dùng để đặt tên cho chương trình. Tên do người lập trình đặt theo các quy tắc của ngôn ngữ lập trình cũng như của chương trình dịch và thoả mãn: Hai đại lượng khác nhau trong một chương trình phải có tên khác nhau. Tên không được trùng với các từ khoá. Tên trong chương trình được dùng để phân biệt và nhận biết. Tuy có thể đặt tên tuỳ ý, nhưng để dễ sử dụng nên đặt tên sao cho ngắn gọn, dễ nhớ và dễ hiểu. Ví dụ 2. Tên hợp lệ trong ngôn ngữ lập tr ... từ bàn phím): uses crt; var SoPi,saiso,Epsilon:real; n,i, dau: integer; begin clrscr; write('Hay cho sai so de tinh gan dung so Pi ='); readln(saiso); SoPi:=0; Epsilon:=3; i:=0; dau:=-1; while Epsilon>=saiso do begin dau:=dau*(-1); SoPi:=SoPi+dau*1/(2*i+1); Epsilon:=Abs(4*SoPi-Pi);i:=i+1 end; {Pi la ham chuan} writeln('So Pi gan bang ',SoPi*4); readln end. Chú thích. Chương trình trên đã sử dụng hàm chuẩn Abs của Pascal. Hàm Abs cho kết quả là giá trị tuyệt đối của một số, tức Abs(x) cho giá trị x, nếu x ³ 0, ngược lại Abs cho kết quả -x. Bài 9. Làm việc với dãy số 1. Dãy số và biến mảng Ví dụ 1. Giả sử chúng ta cần viết chương trình nhập điểm kiểm tra của các học sinh trong một lớp và sau đó in ra màn hình điểm số cao nhất. Vì mỗi biến chỉ có thể lưu một giá trị duy nhất, để có thể nhập điểm và so sánh chúng, ta cần sử dụng nhiều biến, mỗi biến cho một học sinh. Ví dụ như trong Pascal ta cần nhiều câu lệnh khai báo và nhập dữ liệu dạng sau đây, mỗi câu lệnh tương ứng với điểm của một học sinh: Var Diem_1, Diem_2, Diem_3, : real; Read(Diem_1); Read(Diem_2), Read(Diem_3); Nếu số học sinh trong lớp càng nhiều thì đoạn khai báo và đọc dữ liệu trong chương trình càng dài. Việc so sánh các điểm đã nhập còn khó khăn hơn. Ta cần nhớ hết tên các biến đã khai báo và rất khó tránh khỏi nhầm lẫn, sai sót. Giả sử chúng ta có thể lưu nhiều dữ liệu có liên quan với nhau (như Diem_1, Diem_2, Diem_3,... ở trên) bằng một biến duy nhất và đánh "số thứ tự" cho các giá trị đó, ta có thể sử dụng quy luật tăng hay giảm của "số thứ tự" và một vài câu lệnh lặp để xử lí dữ liệu một cách đơn giản hơn, chẳng hạn: Với i = 1 đến 50: hãy nhập Diem_i; Với i = 1 đến 50: hãy so sánh Max với Diem_i; Để giúp giải quyết các vấn đề trên, hầu hết các ngôn ngữ lập trình đều có một kiểu dữ liệu được gọi là kiểu mảng. Dữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có cùng một kiểu dữ liệu, gọi là kiểu của phần tử. Việc sắp thứ tự được thực hiện bằng cách gán cho mỗi phần tử một chỉ số: Hình 40 Trong bài này, chúng ta chỉ xét các mảng có các phần tử kiểu số nguyên hoặc số thực. 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. Có thể nói rằng, khi sử dụng biến mảng, về thực chất chúng ta sắp thứ tự 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, hoặc số thực) có thứ tự, mỗi số là giá trị của biến thành phần tương ứng. 2. Ví dụ về biến mảng Để làm việc với các dãy số nguyên hay số thực, chúng ta phải khai báo biến mảng có kiểu tương ứng trong phần khai báo của chương trình. Cách khai báo biến mảng trong các ngôn ngữ lập trình có thể khác nhau, nhưng luôn cần chỉ rõ: tên biến mảng, số lượng phần tử, kiểu dữ liệu chung của các phần tử. Ví dụ, cách khai báo đơn giản một biến mảng trong ngôn ngữ Pascal như sau: var Chieucao: array[1..50] of real; var Tuoi: array[21..80] of integer; Với câu lệnh thứ nhất, ta đã khai báo một biến có tên Chieucao gồm 50 phần tử, mỗi phần tử là biến có kiểu số thực. Với câu lệnh khai báo thứ hai, ta có biến Tuoi gồm 60 phần tử (từ 21 đến 80) có kiểu số nguyên. Từ hai ví dụ trên, có thể thấy cách khai báo mảng trong Pascal như sau: Tên mảng : array[.. ] of trong đó chỉ số đầu và chỉ số cuối là hai số nguyên hoặc biểu thức nguyên thoả mãn chỉ số đầu ≤ chỉ số cuối và kiểu dữ liệu có thể là integer hoặc real. Ví dụ 2. Tiếp tục với ví dụ 1, thay vì khai báo các biến Diem_1, Diem_2, Diem_3,... để lưu điểm số của các học sinh, ta khai báo biến mảng Diem như sau: var Diem: array[1..50] of real; Cách khai báo và sử dụng biến mảng như trên có lợi gì? Trước hết, có thể thay rất nhiều câu lệnh nhập và in dữ liệu ra màn hình bằng một câu lệnh lặp. Chẳng hạn, ta có thể viết For i:=1 to 50 do readln(Diem[i]); để nhập điểm của các học sinh. Thay vì phải viết 50 câu lệnh khai báo và 50 câu lệnh nhập, ta chỉ cần viết hai câu lệnh là đủ và kết quả đạt được là như nhau. Ta còn có thể sử dụng biến mảng một cách rất hiệu quả trong xử lí dữ liệu. Để so sánh điểm của mỗi học sinh với một giá trị nào đó, ta cũng chỉ cần một câu lệnh lặp, chẳng hạn For i:=1 to 50 do if Diem[i]>8.0 then writeln('Gioi'); Điều này giúp tiết kiệm rất nhiều thời gian và công sức viết chương trình. Hơn nữa, mỗi học sinh có thể có nhiều điểm theo từng môn học: điểm Toán, điểm Văn, điểm Lí,... Để xử lí đồng thời các loại điểm này, ta có thể khai báo nhiều biến mảng: var DiemToan: array[1..50] of real; var DiemVan: array[1..50] of real; var DiemLi: array[1..50] of real; hay var DiemToan, DiemVan, DiemLi: array[1..50] of real; Khi đó, ta cũng có thể xử lí điểm thi của một học sinh cụ thể (ví dụ như tính điểm trung bình của Lan, tính điểm cao nhất của Châu,...) hoặc tính điểm trung bình của cả lớp,... Hình 41 Sau khi một mảng đã được khai báo, chúng ta có thể làm việc với các phần tử của nó như làm việc với một biến thông thường như gán giá trị, đọc giá trị và thực hiện các tính toán với các giá trị đó. Ví dụ 2 cũng cho thấy rằng, chúng ta gán giá trị, đọc giá trị và tính toán với các giá trị của một phần tử trong biến mảng thông qua chỉ số tương ứng của phần tử đó. Chẳng hạn, trong câu lệnh trên Diem[i] là phần tử thứ i của biến mảng Diem. Ta có thể gán giá trị cho các phần tử của mảng bằng câu lệnh gán: A[1]:=5; A[2]:=8; hoặc nhập dữ liệu từ bàn phím bằng câu lệnh lặp: for i := 1 to 5 do readln(a[i]); 3. Tìm giá trị lớn nhất và nhỏ nhất của dãy số Ví dụ 3. Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số lớn nhất. N cũng được nhập từ bàn phím (xem lại thuật toán trong ví dụ 6, bài 5). Trước hết ta khai báo biến N để nhập số các số nguyên sẽ được nhập vào. Sau đó khai báo N biến lưu các số được nhập vào như là các phần tử của một biến mảng A. Ngoài ra, cần khai báo một biến i làm biến đếm cho các lệnh lặp và biến Max để lưu số lớn nhất, Min để lưu số nhỏ nhất. Phần khai báo của chương trình có thể như sau: program MaxMin; uses crt; Var i, n, Max, Min: integer; A: array[1..100] of integer; Phần thân chương trình sẽ tương tự dưới đây: Begin clrscr; write('Hay nhap do dai cua day so, N = '); readln(n); writeln('Nhap cac phan tu cua day so:'); For i:=1 to n do Begin write('a[',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; write('So lon nhat la Max = ',Max); write('; So nho nhat la Min = ',Min); readln End. Trong chương trình này, chúng ta hãy lưu ý điểm sau: Số tối đa các phần tử của mảng (còn gọi là kích thước của mảng) phải được khai báo bằng một số cụ thể (ở đây là 100, mặc dù số các số nhập vào sau này có thể nhỏ hơn nhiều so với 100). Ghi nhớ Dữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự và mọi phần tử đều có cùng một kiểu dữ liệu. Việc gán giá trị, nhập giá trị và tính toán với các giá trị của một phần tử trong biến mảng được thực hiện thông qua chỉ số tương ứng của phần tử đó. Sử dụng các biến mảng và câu lệnh lặp giúp cho việc viết chương trình được ngắn gọn và dễ dàng hơn. Câu hỏi và bài tập Hãy nêu các lợi ích của việc sử dụng biến mảng trong chương trình. Các khai báo biến mảng sau đây trong Pascal đúng hay sai? var X: Array[10,13] Of Integer; var X: Array[5..10.5] Of Real; var X: Array[3.4..4.8] Of Integer; var X: Array[10..1] Of Integer; var X: Array[4..10] Of Real; "Có thể xem biến mảng là một biến được tạo từ nhiều biến có cùng kiểu, nhưng chỉ dưới một tên duy nhất". Phát biểu đó đúng hay sai? Câu lệnh khai báo biến mảng sau đây máy tính có thực hiện được không? var N: integer; A: array[1..N] of real; Viết chương trình Pascal sử dụng biến mảng để nhập từ bàn phím các phần tử của một dãy số. Độ dài của dãy cũng được nhập từ bàn phím. Bài thực hành 7 Xử lí dãy số trong chương trình 1. Mục đích, yêu cầu Làm quen với việc khai báo và sử dụng các biến mảng. Ôn luyện cách sử dụng câu lệnh lặp fordo. Củng cố các kĩ năng đọc, hiểu và chỉnh sửa chương trình. 2. Nội dung Bài 1. Viết chương trình nhập điểm của các bạn trong lớp. Sau đó in ra màn hình số bạn đạt kết quả học tập loại giỏi, khá, trung bình và kém (theo tiêu chuẩn từ 8.0 trở lên đạt loại giỏi, từ 6.5 đến 7.9 đạt loại khá, từ 5.0 đến 6.4 đạt trung bình và dưới 5.0 xếp loại kém). Xem lại các ví dụ 2 và ví dụ 3, bài 9 về cách sử dụng và khai báo biến mảng trong Pascal. Liệt kê các biến dự định sẽ sử dụng trong chương trình. Tìm hiểu phần khai báo dưới đây và tìm hiểu tác dụng của từng biến: program Phanloai; uses crt; Var i, n, Gioi, Kha, Trungbinh, Kem: integer; A: array[1..100] of real; Gõ phần khai báo trên vào máy tính và lưu tệp với tên Phanloai. Tìm hiểu các câu lệnh trong phần thân chương trình dưới đây: Begin clrscr; write('Nhap so cac ban trong lop, n = '); readln(n); writeln('Nhap diem:'); For i:=1 to n do Begin write(i,'. '); readln(a[i]); End; Gioi:=0; Kha:=0; Trungbinh:=0; Kem:=0; for i:=1 to n do begin if a[i]>=8.0 then Gioi:=Gioi+1; if a[i]<5 then Kem:=Kem+1; if (a[i]=6.5) then Kha:=Kha+1; if (a[i]>=5) and (a[i]<6.5) then Trungbinh:=trungbinh+1 end; writeln('Ket qua hoc tap:'); writeln(Gioi,' ban hoc gioi'); writeln(Kha,' ban hoc kha'); writeln(Trungbinh,' ban hoc trung binh'); writeln(Kem,' ban hoc kem'); readln End. Gõ tiếp phần chương trình này vào máy tính sau phần khai báo. Dịch, chạy chương trình. Bài 2. Bổ sung và chỉnh sửa chương trình trong bài 1 để nhập hai loại điểm Toán và Ngữ văn của các bạn, sau đó in ra màn hình điểm trung bình của mỗi bạn trong lớp (theo công thức điểm trung bình = (điểm Toán + điểm Ngữ văn)/2), điểm trung bình của cả lớp theo từng môn Toán và Ngữ văn. Tìm hiểu ý nghĩa của các câu lệnh sau đây: Phần khai báo: Var i, n: integer; TbToan, TbVan: real; DiemToan, DiemVan: array[1..100] of real; Phần thân chương trình: begin writeln('Diem trung binh:'); for i:=1 to n do writeln(i,'. ',(DiemToan[i]+DiemVan[i])/2:3:1); TbToan:=0; TbVan:=0; for i:=1 to n do begin TbToan:=TbToan+DiemToan[i]; TbVan:=TbVan+DiemVan[i] end; TbToan:=TbToan/n; TbVan:=TbVan/n; writeln('Diem trung binh mon Toan: ',TbToan:3:2); writeln('Diem trung binh mon Van: ',TbVan:3:2); end. Bổ sung các câu lệnh trên vào vị trí thích hợp trong chương trình. Thêm các lệnh cần thiết, dịch và chạy chương trình với các số liệu thử. TổNG KếT Cú pháp khai báo biến mảng kiểu số nguyên và số thực trong Pascal có dạng: Var :array[..]of integer; Var : array[..] of real; trong đó chỉ số đầu không lớn hơn chỉ số cuối. Tham chiếu tới phần tử của mảng được xác định bằng cách: [chỉ số]
Tài liệu đính kèm: