Tải bản đầy đủ (.doc) (23 trang)

SGK Tin hoc THCS Quyen 3 phan 1.doc

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 (1.2 MB, 23 trang )

PhÇn 1
LËp tr×nh ®¬n gi¶n

3


Bài 1. Máy tính
và chơng trình máy tính
Tóm tắt: Khái niệm chơng trình nh một công cụ và cách
thức để điều khiển máy tính làm việc theo ý muốn của con
ngời.

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, 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 (ghi
chữ lên màn hình).
Khi thực hiện lệnh sao chép một đoạ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 hai lệnh: lệnh thứ nhất là sao
chép nội dung đoạn văn bản vào bộ nhớ của máy tính và lệnh thứ hai là sao chép
nội dung 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 này theo
đúng thứ tự nhận đợc.

2. Ví dụ: rô-bốt quét nhà


Rô-bốt (hay ngời máy) là một loại máy có thể thực hiện những công việc
một cách tự động 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ề 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.
Giả sử có một đống rác và một rô-bốt ở các vị trí nh hình 1 dới đây. Từ vị trí
hiện thời của rô-bốt, ta cần ra các lệnh để chỉ dẫn rô-bốt nhặt rác và bỏ rác vào
thùng rác để ở nơi quy định.

4


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:
1. Rẽ phải 3 bớc.
2. Tiến 1 bớc
3. Nhặt rác
4. Rẽ phải 3 bớc.
5. Tiến 3 bớc
6. Bỏ rác vào thùng

Giả sử các lệnh trên đợc viết và lu trong một tệp 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 trong tệp đó 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
Trong ví dụ nói trên, việc viết các lệnh để điều khiển rô-bốt về thực chất
cũng có nghĩa 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.
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. 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:

5


Hình 2. Ví dụ về chơng trình

4. Tại sao cần viết chơng trình?
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ế ngời ta cần viết nhiều
lệnh và tập hợp lại trong một chơng trình.
Để 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 làm thế nào để máy tính hiểu đợc các lệnh của con ngời? Ta có thể
ra lệnh cho máy tính bằng cách nói hoặc gõ các phím bất kì đợc khô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 tín hiệu đợc kí hiệu bằng 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 giúp dịch tiếng Việt sang tiếng Anh và ngợc lại. Tơng tự, để ra
lệnh cho máy tính, con ngời cũng phải dùng ngôn ngữ máy để máy có thể hiểu đợ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. Vì thế các ngôn ngữ lập trình đã ra đời để giảm nhẹ khó khăn trong việc
viết chơng trình. Với ngôn ngữ lập trình, thay vì phải viết các dãy bit, ngời viết chơng trình có thể sử dụng các từ có nghĩa (thờng là tiếng Anh). Nhờ vậy, ngời lập
trình có thể hiểu và nhớ ý nghĩa của các câu lệnh một cách dễ dàng hơn.

6



Khi đó, các chơng trình dịch đóng vai trò "ngời phiên dịch" và dịch những
chơng trình đợc viết bằng ngôn ngữ lập trình sang ngôn ngữ máy để máy tính có
thể hiểu đợc.

GHI NHớ
1. 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.
2. Viết chơng trình là hớng dẫn máy tính thực hiện các công vệc hay giải
một bài toán cụ thể.

CÂU HỏI Và BàI TậP
1. Em hãy cho biết trong soạn thảo văn bản khi yêu cầu máy tính tìm kiếm
và thay thế (Replace), thực chất ta đã yêu cầu máy thực hiện những lệnh
gì? Ta có thể thay đổi thứ tự của chúng đợc không?
2. Sau khi thực hiện lệnh Hãy quét nhà ở trên, vị trí mới của rô-bốt là gì?
Em hãy đa ra các lệnh để rô-bốt trở lại vị trí xuất phát của nó (góc dới
bên trái màn hình).
3. Tại sao ngời ta tạo ra các ngôn ngữ khác để lập trình trong khi các máy
tính đều đã có ngôn ngữ máy của mình?

7


Bài 2. Từ BàI TOáN ĐếN CHƯƠNG TRìNH
Tóm tắt: Thế nào là bài toán và xác định bài toán. Quá
trình giải bài toán trên máy tính. Làm quen với khái niệm
thuật toán và mô tả thuật toán.

1. Bài toán và chơng trình
Bài toán là khái niệm quen thuộc trong các môn học nh Toán, Vật lí,...
Chẳng hạn tính tổng của các số tự nhiên từ 1 đến 100, tính quãng đờng ô tô đi đợc

trong 3 giờ với tốc độ 60 km/giờ là những ví dụ về bài toán.
Tuy nhiên, hàng ngày ta thờng gặp và giải quyết các công việc đa dạng hơn
nhiều. Ví dụ: lập bảng cửu chơng, lập bảng điểm của các bạn trong lớp hoặc so
sánh chiều cao của hai bạn Long và Trang,... Nói chung, chúng ta hiểu bài toán là
một công việc hay một nhiệm vụ cần phải giải quyết.
Để máy tính có thể giúp giải quyết các bài toán nói chung, chúng ta cũng
phải viết chơng trình, tức chỉ dẫn cho máy tính thực hiện các phần công việc cụ thể
thông qua các lệnh và cho kết quả mong muốn.
Chẳng hạn, với bài toán ghi ra màn hình tổng của hai số a và b đợc gõ vào từ
bàn phím, chơng trình có thể gồm các lệnh nh hình sau đây:

2. Bài toán và xác định bài toán
Các bài toán rất phong phú và đa dạng. Ví dụ: Tính diện tích hình tam giác,
tìm đờng đi tránh các điểm nút nghẽn giao thông trong giờ cao điểm, nấu một món
ăn từ những thực phẩm hiện có,...
Để phát biểu một bài toán cụ thể, ngời ta cần xác định rõ các điều kiện cho
trớc và kết quả cần thu đợc.
Ví dụ
Để tính diện tích hình tam giác:

8




Điều kiện cho trớc: Một cạnh và chiều cao tơng ứng với cạnh đó;

Kết quả cần thu đợc: Diện tích hình tam giác.
Đối với bài toán nấu một món ăn:



Điều kiện cho trớc: Thực phẩm hiện có (trứng, mỡ, mắm, muối, rau,...);

Kết quả cần thu đợc: Một món ăn.
Đối với bài toán vợt qua điểm nút nghẽn giao thông:


Điều kiện cho trớc: Điểm nút giao thông và các con đờng có thể đi;

Kết quả cần thu đợc: Đờng về nhà mà không phải đi qua điểm nút nghẽn
giao thông.
Muốn giải đợc thì việc xác định bài toán là rất quan trọng.

3. Quá trình giải bài toán trên máy tính

Giải bài toán trên máy tính có nghĩa là giao cho máy tính cách thực hiện các
hoạt động cụ thể qua từng bớc để từ điều kiện cho trớc ta nhận đợc kết quả cần
thiết.
Mặc dù có nhiều tính năng u việt, song máy tính vẫn chỉ là một công cụ trợ
giúp con ngời trong xử lý thông tin. Máy tính chỉ có thể thực hiện các công việc
tiếp nhận, xử lý, biến đổi, tính toán, lu trữ và biểu diễn thông tin thành dạng cần
thiết dới sự chỉ dẫn của con ngời thông qua các câu lệnh. Do vậy, việc dùng máy
tính giải một bài toán nào đó chính là hớng dẫn cho máy tính dãy hữu hạn các thao
tác đơn giản mà nó có thể thực hiện đợc để từ các điều kiện cho trớc ta nhận đợc
kết quả cần thu đợc.
Dãy hữu hạn các thao tác cần thực hiện để giải một bài toán thờng đợc gọi là
thuật toán.
Máy tính không thể tự mình tìm ra lời giải của các bài toán. Lời giải của một
bài toán cụ thể phải là t duy sáng tạo của con ngời và kết quả của t duy đó là thuật
toán. Một khi đã có thuật toán, dựa vào thuật toán chúng ta sẽ viết ch ơng trình

trong một ngôn ngữ lập trình nào đó. Máy tính sẽ chạy chơng trình và cho ta lời
giải của bài toán (hình 4).

Hình 4
Từ đó ta thấy rằng, thuật toán mới là các bớc để giải một bài toán, còn chơng
trình chỉ là thể hiện của thuật toán trên một ngôn ngữ lập trình cụ thể.
Có thể phân chia quá trình dùng máy tính để giải bài toán thành các bớc sau:
9




Xác định bài toán: Xác định cụ thể hai thành phần của bài toán: điều kiện
ban đầu (thông tin vào - INPUT) và kết quả cần xác định (thông tin ra
-OUTPUT).



Thiết lập phơng án giải quyết (xây dựng thuật toán): Bao gồm việc lựa chọn
và mô tả các thao tác cùng trình tự thực hiện các thao tác đó (mô tả thuật
toán) để giải bài toán đã cho. Cần phải lu ý, có thể có nhiều thuật toán khác
nhau cùng giải một bài toán, song mỗi thuật toán chỉ dùng để giải một bài
toán cụ thể. Vì vậy, khi mô tả thuật toán, ngời ta thờng chỉ ra cả INPUT và
OUTPUT kèm theo để biết đợc thuật toán đó dùng để giải bài toán nào.



Viết chơng trình (lập trình): Là diễn đạt (thể hiện) thuật toán bằng một
ngôn ngữ lập trình sao cho máy tính có thể hiểu và thực hiện. Nh vậy, chơng
trình thực chất là sự mô tả thuật toán thành các thao tác cụ thể (các câu

lệnh) để máy tính có thể thực hiện.

4. Thuật toán và mô tả thuật toán
Trong phần này chúng ta sẽ tìm hiểu sâu hơn về khái niệm thuật toán.
Nhiều công việc thờng nhật chúng ta làm gần nh không cần phải suy nghĩ,
tuy nhiên, nếu hệ thống lại, ta có thể thấy thực chất đó là những thuật toán. Đơn
giản nh việc pha trà mời khách có thể đợc nêu thành các bớc nh sau:

Bớc 1: Tráng ấm chén bằng nớc sôi.


Bớc 2: Cho trà vào ấm.



Bớc 3: Rót nớc sôi vào ấm và đợi khoảng 3-4 phút.



Bớc 4: Rót trà ra chén để mời khách.

Cách liệt kê các bớc nh trên là một phơng pháp thờng dùng để mô tả thuật
toán. Trong các thuật toán đợc trình bày tiếp theo, nếu không có các yêu cầu gì
khác, các bớc của thuật toán đợc thực hiện một cách tuần tự theo trình tự nh đã đợc chỉ ra.
Mặc dù không đợc nêu rõ trong khái niệm thuật toán, song thuật toán phải đợc mô tả đủ cụ thể để bất kỳ đối tợng nào thực thi thuật toán, với cùng khả năng và
điều kiện nh nhau, cũng đều thu đợc kết quả nh nhau. Để minh họa, chúng ta cùng
xét thêm một vài ví dụ:
Bài toán giải phơng trình bậc nhất dạng tổng quát bx + c = 0:

10




Bớc 1. Nếu b = 0 chuyển tới bớc 3.



Bớc 2. Tính nghiệm của phơng trình x =

c
rồi chuyển tới bớc 4.
b




Bớc 3. Nếu c 0, thông báo phơng trình đã cho vô nghiệm. Ngợc lại (c =
0), thông báo phơng trình có vô số nghiệm.

Bớc 4. Kết thúc thuật toán.
Bài toán Chuẩn bị món trứng tráng


Bớc 1: Đập quả trứng, tách vỏ và cho trứng vào bát.



Bớc 2: Cho một chút muối và hành tơi thái nhỏ vào trứng. Dùng đũa
quấy mạnh khoảng 1 phút cho muối tan đều trong trứng.




Bớc 3: Cho một thìa dầu ăn vào chảo, đun nóng đều rồi đổ trứng vào.
Nấu trong khoảng 1 phút.



Bớc 4: Dùng đũa, thìa lật mặt trên của miếng trứng úp xuống dới. Nấu
tiếp trong khoảng 1 phút.

Bớc 5: Lấy trứng ra đĩa.
Rõ ràng, bất kỳ ai biết về các phép toán số học hay hiểu biết một chút về
làm bếp, theo đúng trình tự và chỉ dẫn ở các bớc trong các thuật toán nêu trên đều
có thể tính ra nghiệm của phơng trình đã cho hay tự chuẩn bị cho mình một món
trứng tráng.
Nh vậy, có thể hiểu:
Thuật toán là dãy các thao tác cần thực hiện theo một trình tự xác định để
thu đợc kết quả cần tìm từ những điều kiện cho trớc.

5. Một số ví dụ về thuật toán

Ví dụ 1. Một hình A đợc ghép từ một hình chữ nhật với chiều rộng 2a, chiều
dài b và một hình bán nguyệt bán kính a nh hình 5 dới đây:

Thuật toán đơn giản để tính diện tích hình A có thể gồm các bớc sau:
INPUT: a là 1/2 chiều rộng và b là chiều dài của hình chữ nhật, a là bán kính
của hình bán nguyệt.
OUTPUT: Diện tích của A.



Bớc 1. Tính S1 = 2a ì b

{Tính diện tích hình chữ nhật}



Bớc 2. Tính S2 = a2/2

{Tính diện tích hình bán nguyệt}



Bớc 3. Tính kết quả S = S1 + S2.
11


Ví dụ trên cũng cho thấy, tùy theo yêu cầu, thuật toán có thể đợc mô tả với
các mức độ chi tiết khác nhau. Chẳng hạn, có thể mô tả thuật toán trên bằng các bớc:

Bớc 1. Tính S1 = 2a.


Bớc 2. Nhân kết quả nhận đợc ở bớc 1 với b.



Bớc 3. Tính S2 = a2.




Bớc 4. Nhân kết quả nhận đợc ở bớc 3 với và chia cho 2.



Bớc 5. Tính kết quả S = S1 + S2 và kết thúc thuật toán.

Trong biểu diễn thuật toán, ngời ta thờng sử dụng kí hiệu a A để chỉ phép
gán giá trị của số hoặc biểu thức A cho biến a. Ví dụ:
x c/b (biến x nhận giá trị bằng c/b);
i i + 5 (biến i đợc gán bằng giá trị hiện tại của i cộng thêm 5 đơn vị).
Nh vậy, phép gán a A thực hiện đồng thời hai việc: xóa giá trị cũ của biến
a và thay vào giá trị mới bằng giá trị của A. Trong các ví dụ tiếp theo chúng ta sẽ
sử dụng kí hiệu phép gán.
Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên.
Ta sẽ dùng biến SUM để lu giá trị của tổng. Việc tính SUM có thể đợc thực
hiện nh sau: Đầu tiên gán cho SUM giá trị bằng 1; tiếp theo lần lợt thêm các giá trị
2, ..., 100 vào SUM. Vấn đề là ở chỗ tổ chức việc lần lợt thêm vào này nh thế
nào? Cách đơn giản nhất là thực hiện liên tiếp 99 phép cộng:


Bớc 1: SUM 1.



Bớc 2: SUM SUM + 2.
...



Bớc 99: SUM SUM + 100.


Tuy nhiên, việc mô tả thuật toán nh trên là quá dài dòng (nhất là khi không
phải 100 số mà n số, với n lớn)! Để ý một chút ta có thể thấy ở tất cả các bớc nêu
trên đều chỉ thực hiện cùng một phép toán: cộng thêm vào SUM lần lợt các giá trị
2, 3,..., 100. Tức là chỉ có một thao tác cộng đợc lặp đi lặp lại 99 lần. Mặt khác,
việc cộng thêm số i vào SUM chỉ đợc thực hiện khi i không vợt quá 100. Vì vậy,
thuật toán tìm SUM có thể đợc mô tả ngắn gọn hơn nh sau:
INPUT: Dãy 100 số tự nhiên đầu tiên (từ 1 đến 100).
OUTPUT: Giá trị SUM = 1 + 2 + ...+ 100.


12

Bớc 1: Gán SUM 1; i 1.




Bớc 2: Gán i i + 1.



Bớc 3: Nếu i 100, thì SUM SUM + i và chuyển lên bớc 2. Trong trờng
hợp ngợc lại (i > 100), kết thúc thuật toán.

Ví dụ 3. Cho hai số thực a và b. Hãy ghi kết quả so sánh hai số đó, chẳng
hạn a > b, a < b, hoặc a = b.
Bài toán rất đơn giản, nhng để có kết quả đúng, ta cần mô tả rõ ràng từng bớc để máy tính thực hiện đợc. Thoạt đầu ta thấy thuật toán sau đây có thể giải
quyết bài toán này:
INPUT: Hai số thực a và b.

OUTPUT: Thông báo số kết quả so sánh.


Bớc 1. So sánh a và b. Nếu a > b, ghi thông báo a lớn hơn b.



Bớc 2. Nếu a < b, ghi thông báo a nhỏ hơn b; ngợc lại, ghi thông báo
a bằng b và kết thúc thuật toán.

Tuy nhiên, nếu thử lại các bớc với a = 6 và b =5, ta sẽ thấy sau bớc 1 ta có
thông báo a lớn hơn b, nhng trong bớc 2, khi kiểm tra a < b ta lại có tiếp thông
báo a bằng b!
Vì vậy cần mô tả chi tiết hơn nh sau:

Bớc 1. So sánh a và b. Nếu a > b, ghi thông báo a lớn hơn b và kết
thúc thuật toán.


Bớc 2. Nếu a < b, ghi thông báo a nhỏ hơn b; ngợc lại, ghi thông báo
a bằng b và kết thúc thuật toán

Ví dụ 4. Đổi giá trị của hai biến x và y cho nhau.
Ta không thể thực hiện trực tiếp luôn hai phép gán: x y và y x. Bởi sau
phép gán thứ nhất thì giá trị của x đã bị thay bằng giá trị của y và kết quả của hai
phép gán này là cả hai biến x và y cùng có giá trị của biến y ban đầu. Vì thế, cần
dùng một biến khác, ví dụ biến z, để lu giá trị của biến x. Do vậy, ta có thuật toán
sau:
INPUT: Hai biến x, y có giá trị tơng ứng là X và Y.
OUTPUT: Đổi giá trị của x và y cho nhau.



Bớc 1. z x {Sau bớc này giá trị của z sẽ bằng X}



Bớc 2. x y {Sau bớc này giá trị của x sẽ bằng Y}



Bớc 3. y z {Sau bớc này giá trị của y sẽ bằng giá trị của z, chính là giá
trị X ban đầu của biến x}
13


Ví dụ 5. Cho hai biến x và y có giá trị tơng ứng là a, b với a < b và biến z có
giá trị c. Hãy sắp xếp ba biến x, y và z để chúng có giá trị tăng dần.
Rõ ràng là x và y đã có các giá trị theo thứ tự tăng dần. Vấn đề còn lại chỉ là
so sánh giá trị c của biến z với a và b và đổi giá trị của các biến x và z, y và z tùy
theo kết quả so sánh. Từ ý tởng này ta có thể giải bài toán bằng thuật toán sau đây:
INPUT: Ba biến x, y và z có giá trị tơng ứng là a, b và c (a < b).
OUTPUT: x, y và z có giá trị tăng dần.


Bớc 1. Tính z x {tức c a}. Nếu z x < 0, thực hiện các phép gán t
x , x z và z t (t là biến trung gian) và kết thúc thuật toán.

Bớc 2. Tính z y {tức c b}. Nếu z y < 0, thực hiện các phép gán t
y , y z và z t và kết thúc thuật toán.
Ví dụ 6: Tìm số lớn nhất trong dãy A các số a1, a2, ..., an cho trớc.




Ta sẽ dùng biến SMAX để lu giá trị phần tử lớn nhất của dãy A. Việc xác
định SMAX có thể đợc thực hiện nh sau. Đầu tiên gán giá trị a1 cho biến SMAX.
Tiếp theo ta lần lợt duyệt các số a1, a2, ..., an của dãy A, cứ mỗi khi xuất hiện một
phần tử có giá trị lớn hơn SMAX thì gán giá trị của phần tử đó cho SMAX. Do
vậy, ta có thuật toán sau:
INPUT: Dãy A các số a1, a2, ..., an (n 1).
OUTPUT: Giá trị SMAX = max {a1, a2, ..., an }.


Bớc 1: Nhập số n và dãy A; gán SMAX a1; i 0.



Bớc 2: i i + 1.



Bớc 3: Nếu i > n, kết thúc thuật toán (khi đó SMAX là giá trị phần tử lớn
nhất của dãy A). Trong trờng hợp ngợc lại (i n), thực hiện bớc 4.



Bớc 4: Nếu ai > SMAX, thay đổi giá trị SMAX: SMAX ai rồi chuyển
về bớc 2. Trong trờng hợp ngợc lại (SMAX ai), giữ nguyên SMAX và
chuyển về bớc 2.

GHI NHớ

1. Cho một bài toán (xác định bài toán) là việc xác định các điều kiện ban
đầu (thông tin vào - INPUT) và các kết quả cần thu đợc (thông tin ra
OUTPUT).
2. Giải bài toán trên máy tính có nghĩa là giao cho máy tính cách thức (thuật
toán) tìm ra lời giải cụ thể của bài toán.

14


3. Quá trình giải một bài toán trên máy tính có các bớc: xác định bài toán;
xây dựng thuật toán; lập chơng trình.
4. Thuật toán thuật toán là dãy các thao tác cần thực hiện theo một trình tự
xác định để thu đợc kết quả cần tìm từ những điều kiện cho trớc.

Câu hỏi và bài tập
1.

2.

Hãy chỉ ra INPUT và OUTPUT của các bài toán sau:
a)

Xác định số học sinh trong lớp cùng mang họ Trần.

b)

Tính tổng của các phần tử lớn hơn 0 trong dãy n số cho trớc.

c)


Tìm số các số có giá trị nhỏ nhất trong n số đã cho.

Giả sử x và y là các biến số. Hãy cho biết kết quả của việc thực hiện
thuật toán sau:



Bớc 1. x x + y



Bớc 2. y x - y



Bớc 3. x x - y

3.

Cho trớc ba số dơng a, b và c. Hãy mô tả thuật toán giải ghi kết quả ba
số đó có thể là ba cạnh của một tam giác hay không.

4.

Cho hai biến x và y có giá trị tơng ứng là a và b. Hãy mô tả thuật toán
đổi giá trị của các biến nói trên để x và y có giá trị tăng dần.

5.

Cho ba biến x, y và z có giá trị tơng ứng là a, b và c. Hãy mô tả thuật

toán đổi giá trị của các biến nói trên để x, y và z có giá trị tăng dần.
Hãy xem lại Ví dụ 5 để tham khảo.

6.

Hãy mô tả thuật toán giải các bài toán sau:
a) Tìm số nhỏ nhất trong dãy A các số a1, a2, ..., an cho trớc.
b) Đếm số các số dơng và các số âm trong dãy số A = {a1, a2,.., an}
cho trớc.
c) Tìm vị trí các số dơng trong dãy số A = {a1, a2,..., an} cho trớc.
d) Tính tổng các phần tử của dãy số A = {a1, a2,..., an} cho trớc.
e) Tính tổng các số dơng trong dãy số A = {a1, a2,..., an} cho trớc.

15


Bài 3. Làm quen với Ngôn ngữ lập trình
Tóm tắt: Thế nào là lập trình. Làm quen với các chơng
trình đầu tiên. Soạn thảo chơng trình đơn giản. Giới thiệu
ngôn ngữ lập trình Pascal.

1. Chơng trình và ngôn ngữ lập trình
Trong các bài trớc, chúng ta đã thử tởng tợng ra cách viết các lệnh giống nh
tiếng Việt để điều khiển rô-bốt hoặc ghi ra màn hình máy tính tổng của hai số a và
b đợc gõ vào từ bàn phím. Ta cũng đã biết rằng, để rô-bốt hoặc máy tính hiểu đợc,
các chơng trình đó phải đợc chuyển đổi sang ngôn ngữ máy. Đáng tiếc cha có một
công cụ nào có thể chuyển đổi đợc các lệnh tiếng Việt đó.
Vì vậy, để tạo một 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.

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), sau đó sử dụng chơng trình dịch để chuyển đổi
thành chơng trình có thể chạy đợc trên máy tính.
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.
Nh vậy, 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 theo 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.

Sản phẩm nhận đợc sau bớc (1), viết chơng trình, là danh sách các lệnh đợc
lu thành một tệp trong máy tính; còn kết quả của bớc (2) là các tệp có thể chạy
trên máy tính. Tuy nhiên ngời ta thờng gọi chung các kết quả đó là chơng trình.
Có rất nhiều ngôn ngữ lập trình. 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ể. Từng ngôn ngữ lập trình đều có
lịch sử phát triển, điểm mạnh, điểm yếu riêng.

16


2. Ngôn ngữ lập trình gồm những gì?
Giống nh một ngôn ngữ tự nhiên, ngôn ngữ lập trình có các chữ cái, quy tắc
để ghép các chữ cái thành một từ có nghĩa (từ khoá), ghép các từ thành một câu
(lệnh). Từ đó, ta có thể hiểu ngôn ngữ lập trình là tập hợp các kí hiệu và quy tắc
sao cho có thể "viết" đợc các lệnh tạo thành một chơng trình hoàn chỉnh và chạy
đợc trên máy tính.
Nh vậy, về cơ bản ngôn ngữ lập trình gồm:
Bảng chữ cái: 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ó mặt trên 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.
Các quy tắc: cách viết (cú pháp) và ý nghĩa của chúng; cách bố trí các câu
lệnh thành chơng trình,...
Ví dụ 1: Hình 6 dới đây là 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 câu lệnh, nhng 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 câu lệnh.

a) Từ khóa
Trong chơng trình trên, các từ nh program, uses, begin, end là những từ
khoá của ngôn ngữ lập trình (trong trờng hợp này là của Pascal). Từ khoá của một
ngôn ngữ lập trình là những từ dành riêng, ngoài mục đích sử dụng do ngôn ngữ
lập trình quy định, không đợc dùng các từ khoá này cho bất kì mục đích nào khác.

b) Sử dụng tên 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 khác nhau, ví dụ nh so sánh chiều cao, tính điểm trung bình,... Các
đại lợng này đều phải đợc đặt tên. Tên do ngời lập trình đặt và phải tuân thủ 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.


Hai đại lợng khác nhau phải có tên khác nhau.



Tên không đợc trùng với các từ khoá.


17


Chơng trình trên Hình 6 có một tên, CT_dau_tien, dùng để đặt tên cho chơng trình.
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
tùy ý, nhng để 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ình Pascal không đợc bắt đầu bằng
chữ số và không chứa dấu cách (kí tự trống). Do vậy chúng ta có thể đặt tên
STamgiac để lu kết quả tính diện tích hình tam giác, hoặc đặt tên ban_kinh nhập
bán kính của hình tròn,...
Chúng ta sẽ dần làm quen với cách đặt tên và sử dụng tên trong các bài sau.

3. Cấu trúc chung của chơng trình
Cấu trúc của chơng trình gồm:


Phần khai báo thờng gồm các câu lệnh dùng để:
o Khai báo tên chơng trình;
o Khai báo các th viện (chứa các lệnh viết sẵn cần sử dụng trong chơng trình) và một số khai báo khác.



Phần thân của chơng trình gồm các câu lệnh mà máy tính cần thực
hiện. Đây là phần bắt buộc phải có.
Phần khai báo có thể có hoặc không. Tuy nhiên, nếu có phần khai báo phải
đợc đặt trớc phần thân chơng trình.
Trở lại với chơng trình trong Hình 6, ta có thể thấy:
- Phần khai báo gồm hai lệnh khai báo tên chơng trình là CT_dau_tien
với từ khoá program và khai báo th viện crt với từ khoá uses.

- Phần thân rất đơn giản và chỉ gồm các từ khoá begin và end. cho biết
điểm bắt đầu và điểm kết thúc phần thân chơng trình. Phân thân chỉ có
một câu lệnh thực sự là writeln('Chao Cac Ban') để in ra màn
hình dòng chữ "Chao Cac Ban".

Hình 7

18


4. Ví dụ về ngôn ngữ lập trình Pascal
Trong phần này chúng ta sẽ làm quen với một ngôn ngữ lập trình cụ thể,
ngông ngữ Pascal. Để lập trình bằng ngôn ngữ Pascal, ta cần có môi trờng lập
trình trên ngôn ngữ này đợc cài đặt trên máy tính.
Dới đây là minh hoạ việc viết và chạy một chơng trình cụ thể trong môi trờng lập trình Turbo Pascal.
Khi khởi động phần mềm Turbo Pascal, cửa sổ soạn thảo chơng trình nh
hình 8 dới đây. Ta có thể sử dụng bàn phím để soạn thảo chơng trình tơng tự nh
soạn thảo văn bản với Word.

Hình 8
Sau khi đã soạn thảo xong, nhấn phím F9 để kiểm tra lỗi chính tả và cú pháp
của lệnh (dịch). Nếu đã hết lỗi chính tả, màn hình có dạng nh hình 9 dới đây sẽ
xuất hiện.

Hình 9
Để chạy chơng trình, ta nhấn tổ hợp phím Ctrl+F9. Trên cửa sổ kết quả của
chơng trình sẽ hiện ra dòng chữ "Chao Cac Ban" nh hình 10 dới đây.

19



Hình 10
Ghi nhớ
1. Ngôn ngữ lập trình là tập hợp các kí hiệu và quy tắc sao cho có thể viết đợc các lệnh tạo thành một chơng trình hoàn chỉnh và chạy đợc trên máy
tính.
2. Một chơng trình thờng có hai phần: Phần khai báo và phần thân chơng
trình

CÂU HỏI Và BàI TậP
1. Hãy cho biết các bớc cần thực hiện để tạo ra các chơng trình máy tính.
2. Ngôn ngữ lập trình có những thành phần cơ bản nào? Những thành phần
đó có ý nghĩa, chức năng gì?
3. Cấu trúc chơng trình gồm những phần nào? Phần nào là quan trọng nhất?
_______________________________________________Đọc thêm
________________________________________________________
C là ngôn ngữ lập trình dành cho các nhà lập trình chuyên nghiệp và hiện đợc dùng
nhiều nhất trên thế giới.
Java là ngôn ngữ lập trình tơng đối mới, phù hợp cho lập trình để tạo các chơng
trình ứng dụng trên mạng Internet.
Basic là ngôn ngữ lập trình tơng đối dễ dùng, có thể nhanh chóng tạo ra các chơng
trình ứng dụng, cũng đợc rất nhiều nhà lập trình sử dụng.
Pascal do nhà bác học Niklaus Wirth sáng lập ra vào những năm 70 của thế kỉ
XX. Đây là một ngôn ngữ có cú pháp sáng sủa, dễ hiểu và thờng đợc dạy trong các
nhà trờng và cho ngời mới học lập trình. Hai môi trờng lập trình trên ngôn ngữ này
đang đợc sử dụng phổ biến hiện nay ở Việt Nam là Turbo Pascal và Free Pascal.

20


Bài thực hành 1


Làm quen với Turbo Pascal
1. Mục đích, yêu cầu


Bớc đầu làm quen với môi trờng lập trình Turbo Pascal, nhận diện màn
hình soạn thảo, cách mở các bảng chọn và chọn lệnh.



Gõ đợc một chơng trình Pascal đơn giản.



Biết cách dịch, sửa lỗi trong chơng trình, chạy chơng trình và xem kết
quả.

2. Nội dung
Bài 1. Làm quen với việc khởi động và thoát khỏi Turbo Pascal. Nhận biết các
thành phần trên màn hình của Turbo Pascal.
a)
Khởi động Turbo Pascal bằng một trong hai cách:

b)

c)

Cách 1: Nháy đúp chuột trên biểu tợng
trên màn hình nền (hoặc trong
bảng chọn Start);

Cách 2: Nháy đúp chuột trên tên tệp Turbo.exe trong th mục chứa tệp này
(thờng là th mục TP hoặc th mục con TP\BIN).
Quan sát màn hình của Turbo Pascal và so sánh với hình 11 dới đây:

Hình 11
Nhận biết các thành phần: Thanh bảng chọn; tên tệp đang mở; con trỏ;
dòng trợ giúp phía dới màn hình.

21


d)
e)
f)

Nhấn phím F10 để mở bảng chọn, sử dụng các phím mũi tên ( và ) để di
chuyển qua lại giữa các bảng chọn.
Nhấn phím Enter để mở một bảng chọn.
Quan sát các lệnh trong từng bảng chọn.

Hình 12
Mở các bảng chọn bằng cách khác: Nhấn tổ hợp phím Alt và phím tắt của bảng
chọn (chữ màu đỏ ở tên bảng chọn, ví dụ phím tắt của bảng chọn File là F, bảng
chọn Run là R,...).
g)
h)

Sử dụng các phím mũi tên lên và xuống ( và ) để di chuyển giữa các lệnh
trong một bảng chọn.
Nhấn tổ hợp phím Alt+X để thoát khỏi Turbo Pascal.


Bài 2. Soạn thảo, lu, dịch và chạy một chơng trình đơn giản.
a)
Khởi động lại Turbo Pascal và gõ các dòng lệnh dới đây:
program CTDT;
begin
writeln('Chao cac ban');
write('Minh la Turbo Pascal');
end.
Chú ý
- Gõ đúng và không để sót các dấu nháy đơn ('), dấu chấm phẩy (;)và dấu chấm (.)
trong các dòng lệnh.
- Soạn thảo chơng trình cũng tơng tự nh soạn thảo văn bản: sử dụng các phím mũi
tên để di chuyển con trỏ, nhấn phím Enter để xuống dòng mới, nhấn các phím
Delete hoặc BackSpace để xoá.

b)

22

Nhấn phím F2 (hoặc lệnh FileSave) để lu chơng trình. Khi hộp thoại hiện
ra, gõ tên tệp (ví dụ CT1.pas) trong ô Save file as (phần mở rộng ngầm định
là .pas) và nhấn Enter (hoặc nháy OK).


c)

d)

Hình 13

Nhấn tổ hợp phím Alt+F9 để biên dịch chơng trình. Khi đó, chơng trình đợc
biên dịch và kết quả hiện ra có dạng nh hình 14 sau đây:

Hình 14
Nhấn phím bất kì để đóng hộp thoại.
Nhấn tổ hợp phím Ctrl+F9 để chạy chơng trình và quan sát kết quả.

Hình 15
Nhấn Enter để quay về màn hình soạn thảo.
Nh vậy, chúng ta đã viết đợc một chơng trình hoàn chỉnh và chạy đợc.
Bài 3. Chỉnh sửa chơng trình, lu và kết thúc.
a)
Xoá dòng lệnh begin. Biên dịch chơng trình và quan sát thông báo lỗi nh
hình dới đây:

Hình 16
23


b)

c)

Nhấn phím bất kì và gõ lại lệnh begin. Xoá dấu chấm sau chữ end. Biên
dịch chơng trình và quan sát thông báo lỗi.

Hình 17
Nhấn Alt+X để thoát khỏi Turbo Pascal, nhng không lu các chỉnh sửa.
1. Các bớc đã thực hiện:


TổNG KếT

Khởi động Turbo Pascal;
Soạn thảo chơng trình;
Biên dịch chơng trình: Alt + F9;
Chạy chơng trình (Ctrl + F9) ;
2. Pascal không phân biệt chữ hoa, chữ thờng: begin, BeGin, hay BEGIN đều
đúng.
3. Các từ khoá của Pascal: program, begin, end.
4. Lệnh kết thúc chơng trình là end. (có dấu chấm), các câu lệnh sau lệnh
này bị bỏ qua trong quá trình dịch chơng trình.
5. Mỗi câu lệnh đợc kết thúc bằng dấu chấm phẩy (;).
6. Lệnh writeln in ra màn hình và đa con trỏ xuống đầu dòng tiếp theo.
Thông tin cần in ra có thể là văn bản, có thể là số,... và đợc phân tách bởi
dấu phẩy.
Lệnh write tơng tự nh writeln, nhng không đa con trỏ xuống đầu dòng
tiếp theo.
_______________________________________________Đọc thêm
Ba bảng chọn thờng đợc sử dụng gồm:
1. Bảng chọn File chứa một số lệnh để làm việc với tệp:
New: Mở cửa sổ mới để soạn thảo chơng trình;
Open: Mở tệp chơng trình đã đợc lu trên đĩa;
Save: Lu tệp đang soạn thảo;
Save as: Lu tệp đang soạn thảo với một tên khác;
Save All: Lu tất cả các tệp đang mở (kể cả những tệp bị che khuất);
Exit: Thoát khỏi Turbo Pascal.
2. Bảng chọn Compile gồm một số lệnh biên dịch:
Compile: Biên dịch chơng trình đang làm việc;

24



Destination: Thay đổi vị trí lu kết quả biên dịch (trong bộ nhớ hay tạo tệp chạy
trực tiếp).
3. Bảng chọn Run
Run: Chạy chơng trình đang làm việc và đã biên dịch.
4. Bảng chọn Option gồm một số lệnh thiết đặt các tùy chọn.

25



×