1. Trang chủ
  2. » Giáo án - Bài giảng

SGK tin học 8

111 489 3
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập trình đơn giản
Trường học Đại Học Sư Phạm Hà Nội
Chuyên ngành Tin Học
Thể loại Sách giáo khoa
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 111
Dung lượng 11,71 MB

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

Nội dung

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 lu thành một tệp vănbản trong máy tính; còn kết quả của bớc 2 là m

Trang 1

P hầ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ôngtin 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ử

Trang 2

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ủamì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óicá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 (inchữ 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ệnhsao 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ộidung 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 đacho 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ệnhcho 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ộtbớ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 dichuyển từ vị trí hiện thời, nhặt rác và bỏ vào thùng rác để ở nơi quy định

Trang 3

4 Quay phải, tiến 3 bớc;

5 Quay trái, tiến 2 bớc;

6 Bỏ rác vào thùng.

Giả sử các lệnh trên đợc viết và lu 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ựchiệ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ênchí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ũngviế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ẻ, nhng bản thântê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ệnbằ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áclệ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 đadạ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ểnmá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ệnhtiế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

Trang 4

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 đợckhô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ớicon ngời trao đổi thông tin bằng ngôn ngữ tự nhiên (tiếng Việt, tiếng Anh, ), máytí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 Anhhoặ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ệnhnhất định mà thôi

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ờigian, 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ộtngô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 racác chơng trình máy tính

Tuy nhiên, máy tính vẫn cha thể hiểu đợc các chơng trình đợc viết bằngngô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ằngmộ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;

Trang 5

(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 lu thành một tệp vănbả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áytí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ự nhchơ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ônngữ lập trình Pascal có hai môi trờng làm việc phổ biến là Turbo Pascal và FreePascal

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 đợctạ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Ớ

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 việc hay giải

một bài toán cụ thể

3 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

1. Trong ví dụ về rô-bốt, nếu thay đổi thứ tự của lệnh 1 và lệnh 2 trongchơng trình, rô-bốt có thực hiện đợc công việc nhặt rác không? Hãyxác định vị trí mới của rô-bốt sau khi thực hiện xong lệnh "Hãy nhặtrác" Em hãy đa ra hai lệnh để rô-bốt trở lại vị trí ban đầu

2. 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

3. 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ềukhiển máy tính bằng ngôn ngữ máy?

4. Chơng trình dịch làm gì?

Trang 6

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ữ "ChaoCac 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ácnhau đợc tạo từ các chữ cái Trong thực tế có những chơng trình có thể có đếnhà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 nhthế 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áiriê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ấunhá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 theomộ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ủachú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ấucá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ìnhdị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ệnhxá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 đầutiê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ứ tchỉ thị cho máy tính in ra màn hình dòng chữ "Chao Cac Ban",

Trang 7

Tóm lại, về cơ bản ngôn ngữ lập trình gồm bảng chữ cáicá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ậptrình quy định Trong ví dụ trên, program là từ khoá dùng để khai báo tên chơngtrình, uses là từ khoá khai báo các th viện, các từ khoá beginend dùng để thôngbá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ềucao, 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

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 đợc chứa dấu cách (kí tự trống) Do vậy chúng ta có thể đặt tên

STamgiac để chỉ diện tích hình tam giác, hoặc đặt tên ban_kinh cho bán kính củahình tròn, Các tên đó là những tên hợp lệ, còn các tên Lop em, 10A, là nhữngtên không hợp lệ

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

4 Cấu trúc chung của chơng trình

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

Phần khai báo thờng gồm các câu lệnh dùng để:

Trang 8

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: 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á beginend 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 là writeln('Chao Cac Ban') để in ra màn hình dòng chữ

"Chao Cac Ban"

Hình 7

5 Ví dụ về ngôn ngữ lập trình

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ôn ngữ Pascal Để lập trình bằng ngôn ngữ Pascal, máy tính cần đợc cài đặt môitrờng lập trình trên ngôn ngữ này

Dới đây là minh hoạ việc viết và chạy một chơng trình cụ thể trong môi ờng lập trình Turbo Pascal

tr-Khi khởi động phần mềm Turbo Pascal, cửa sổ soạn thảo chơng trình nhhì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ự nhsoạn thảo văn bản với Word

Hình 8

Sau khi đã soạn thảo xong, nhấn phím Alt+F9 để dịch chơng trình Chơngtrình dịch sẽ kiểm tra các lỗi chính tả và cú pháp; nếu gặp câu lệnh sai, chơng trìnhdịch sẽ thông báo để ngời viết chơng trình dễ nhận biết và chỉnh sửa Nếu đã hếtlỗi, sau khi dịch, màn hình có dạng nh hình 9 dới đây:

Trang 9

Hình 9

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

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 viết các lệnh 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

2 Mọi ngôn ngữ lập trình thờng có tập hợp các từ khoá dành riêng cho

những mục đích sử dụng nhất định

3 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

4 Tên đợc dùng để phân biệt các đại lợng trong chơng trình và do ngời lập

trình đặt

Trang 10

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

1. Hãy cho biết các thành phần cơ bản của một ngôn ngữ lập trình

2. Ta có thể viết chơng trình có các câu lệnh bằng tiếng Việt, chẳng hạn

"rẽ trái", đợc không? Tại sao?

3. Cho biết sự khác nhau giữa từ khoá và tên Cho biết cách đặt tên trongchơng trình

4. Trong số các tên sau đây, trong một chơng trình Pascal, tên nào là hợplệ?

A) a; B) Tamgiac; C) 8a; D) Tam giac;

E) beginprogram; F) end; G) b1; H) abc

5. Hãy cho biết các thành phần chính trong cấu trúc của chơng trình

6. Các chơng trình Pascal sau đây có hợp lệ không, tại sao?

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 nhà trờng và dành cho ngời mới học lập trình Chính vì thế Pascal thờng đợc gọi là

"ngôn ngữ lập trình của học đờng" 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.

Trang 11

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ànhì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ếtquả

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:

Cách 1: Nháy đúp chuột trên biểu tợng trên màn hình nền;

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 con TP\BIN)

b) Quan sát màn hình của Turbo Pascal và so sánh với hình 11 dới đây:

Trang 12

h) 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 CT_Dau_tien;

uses crt;

begin

clrscr;

writeln('Chao cac ban');

write('Toi la Turbo Pascal');

nhấn các phím Delete hoặc BackSpace để xoá

- Câu lệnh uses crt đợc dùng để khai báo th viện crt, còn lệnh clrscr có tácdụng xoá màn hình kết quả Chỉ có thể sử dụng câu lệnh clrscr sau khi đãkhai báo th viện crt

b) 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) trong ô Save file as (phần mở rộng ngầm định là

.pas) và nhấn Enter (hoặc nháy OK)

Trang 13

Hình 13

c) Nhấn tổ hợp phím Alt+F9 để dịch chơng trình Khi đó chơng trình đợc dịch

và kết quả hiện ra có thể nh hình 14 sau đây:

Hình 14

Nhấn phím bất kì để đóng hộp thoại

d) Nhấn tổ hợp phím Ctrl+F9 để chạy chơng trình Sau đó nhấn Alt+F5 để quansát kết quả

Hình 15

Nhấn phím bất kì để 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 và nhận biết một số lỗi.

a) Xoá dòng lệnh begin Dịch chơng trình và quan sát thông báo lỗi nh hình 16dới đây:

Trang 14

Hình 16 Lỗi 36: Thiếu BEGIN

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

Hình 17 Lỗi 10: Không tìm thấy kết thúc tệp

Lu ý Qua các thông báo lỗi trên, ta thấy rằng phần thân của một chơng trình

Pascal bao giờ cũng bắt đầu bằng từ khoá begin Dấu chấm phẩy (;) đợc dùng đểphân cách các lệnh trong Pascal Riêng từ khoá end kết thúc phần thân chơng trìnhluôn có một dấu chấm (.) đi kèm

c) Nhấn Alt+X để thoát khỏi Turbo Pascal, nhng không lu các chỉnh sửa

3 Các từ khoá của Pascal trong bài là: program, begin, end, uses

4 Lệnh kết thúc chơng trình là end. (có dấu chấm), mọi thông tin đứng saulệnh này bị bỏ qua trong quá trình dịch chơng trình

5 Dấu chấm phẩy (;) đợc dùng để phân cách các lệnh trong Pascal

6 Lệnh writeln in thông tin ra màn hình và đa con trỏ xuống đầu dòng tiếptheo

Có thể in thông tin dạng văn bản hoặc dạng số, Văn bản cần in ra bằngcâu lệnh phải đợc đặt trong cặp dấu nháy đơn

Lệnh write tơng tự nh writeln, nhng không đa con trỏ xuống đầu dòng

tiếp theo

7 Câu lệnh clrscr dùng để xoá màn hình kết quả và chỉ sử dụng đợc khi đãkhai báo th viện crt Th viện crt chứa các lệnh viết sẵn để thao tác vớimàn hình và bàn phím

Trang 15

_Đọ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;

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 tuỳ chọn.

Trang 16

Bài 3 Chơng trình máy tính

Và Dữ LIệU

1 Dữ liệu và kiểu dữ liệu

Máy tính là công cụ xử lí thông tin, còn chơng trình chỉ dẫn cho máy tínhcách thức xử lí thông tin để có kết quả mong muốn Thông tin rất đa dạng nên dữliệu trong máy tính cũng rất khác nhau về bản chất Để dễ dàng quản lí và tănghiệu quả xử lí, các ngôn ngữ lập trình thờng phân chia dữ liệu thành các kiểu khácnhau: chữ, số nguyên, số thập phân,

Ví dụ 1 Hình 18 dới đây minh hoạ kết quả thực hiện của một chơng trình: in ra

màn hình với các kiểu dữ liệu quen thuộc là chữ và số

Hình 18

Các kiểu dữ liệu thờng đợc xử lí theo các cách khác nhau Chẳng hạn, ta cóthể thực hiện các phép toán số học với các số, nhng với các câu chữ thì các phéptoán đó không có nghĩa

Các ngôn ngữ lập trình định nghĩa sẵn một số kiểu dữ liệu cơ bản Kiểu dữliệu xác định các giá trị có thể của dữ liệu và các phép toán có thể thực hiện trêncác giá trị đó Dới đây là một số kiểu dữ liệu thờng dùng nhất:

Số nguyên, ví dụ số học sinh của một lớp, số sách trong th viện,

Số thực, ví dụ chiều cao của bạn Bình, điểm trung bình môn Toán,

Xâu kí tự (hay xâu) là dãy các "chữ cái" lấy từ bảng chữ cái của ngôn

ngữ lập trình, ví dụ: "Chao cac ban", "Lop 8E", "2/9/1945"

Trong các ngôn ngữ lập trình, dữ liệu kiểu số nguyên còn đợc phân chia tiếpthành các kiểu nhỏ hơn theo các phạm vi giá trị khác nhau, dữ liệu kiểu số thực đ-

ợc phân chia thành các kiểu có độ chính xác (số chữ số thập phân) khác nhau.Ngoài các kiểu nói trên, mỗi ngôn ngữ lập trình cụ thể còn định nghĩa nhiềukiểu dữ liệu khác Số các kiểu dữ liệu và tên kiểu dữ liệu trong mỗi ngôn ngữ lậptrình có thể khác nhau

Ví dụ 2 Bảng 1 dới đây liệt kê một số kiểu dữ liệu cơ bản của ngôn ngữ lập trình

Pascal:

integer Số nguyên trong khoảng −215 đến 215− 1

real Số thực có giá trị tuyệt đối trong khoảng

Trang 17

2,9ì10-39 đến 1,7ì1038 và số 0.

char Một kí tự trong bảng chữ cái

string Xâu kí tự, tối đa gồm 255 kí tự

Bảng 1

Trong Pascal, để chỉ rõ cho chơng trình dịch hiểu dãy chữ số là kiểu xâu, taphải đặt dãy số đó trong cặp dấu nháy đơn Ví dụ '5324' , '863'

2 Các phép toán với dữ liệu kiểu số

Trong mọi ngôn ngữ lập trình ta đều có thể thực hiện các phép toán số họccộng, trừ, nhân và chia với các số nguyên và số thực

Chẳng hạn, bảng dới đây là kí hiệu của các phép toán số học đó trong ngônngữ Pascal:

+ cộng số nguyên, số thực

* nhân số nguyên, số thực

div chia lấy phần nguyên số nguyên

mod chia lấy phần d số nguyên

a ì b − c + d a*b-c+d

Trang 18

• Các phép toán trong ngoặc đợc thực hiện trớc tiên;

• Trong dãy các phép toán không có dấu ngoặc, các phép nhân, phépchia, phép chia lấy phần nguyên và phép chia lấy phần d đợc thực hiệntrớc;

• Phép cộng và phép trừ đợc thực hiện theo thứ tự từ trái sang phải Chú ý rằng khi viết các biểu thức toán, để dễ phân biệt, ta có thể dùng cáccặp dấu ngoặc tròn ( và ), dấu ngoặc vuông [ và ], dấu ngoặc nhọn { và } để gộpcác phép toán, nhng trong các ngôn ngữ lập trình chỉ đợc sử dụng dấu ngoặc tròncho mục đích này

Ví dụ, biểu thức [(a b)(c d) 6]

a3

Kết quả của phép so sánh chỉ có thể là đúng hoặc sai Ví dụ, phép so sánh

9≥ 6 cho kết quả đúng, 10 = 9 cho kết quả sai hoặc 5 < 3 cũng cho kết quả sai,

Để so sánh giá trị của hai biểu thức, chúng ta cũng sử dụng các kí hiệu nóitrên Ví dụ:

5 ì 2 = 9

15 + 7 > 20 − 3

Trang 19

5 + x ≤ 10

Biểu thức thứ nhất là sai (10 = 9), còn biểu thức thứ hai (22 > 17) là đúng.Biểu thức thứ ba (5 + x ≤ 10) đúng hoặc sai lại phụ thuộc vào giá trị cụ thể của x Khi viết chơng trình, để so sánh dữ liệu (số, biểu thức, ) chúng ta sử dụngcác kí hiệu do ngôn ngữ lập trình quy định

Kí hiệu các phép toán và phép so sánh có thể khác nhau, tuỳ theo từng ngônngữ lập trình

Ví dụ 3 Bảng 4 dới đây cho thấy kí hiệu của các phép so sánh trong ngôn ngữ

4 Giao tiếp ngời - máy tính

Trong khi thực hiện chơng trình máy tính, con ngời thờng có nhu cầu canthiệp vào quá trình tính toán, thực hiện việc kiểm tra, điều chỉnh, bổ sung Ngợclại, máy tính cũng cho thông tin về kết quả tính toán, thông báo, gợi ý, Quá trìnhtrao đổi dữ liệu hai chiều nh thế thờng đợc gọi là giao tiếp hay tơng tác giữa ngời

và máy tính Với các máy tính cá nhân, tơng tác ngời-máy thờng đợc thực hiệnnhờ các thiết bị chuột, bàn phím và màn hình Dới đây là một số trờng hợp tơngtác ngời-máy

a) Thông báo kết quả tính toán

Thông báo kết quả tính toán là yêu cầu đầu tiên đối với mọi chơng trình Ví

dụ, câu lệnh

write('Dien tich hinh tron la ',X);

in kết quả tính diện tích hình tròn ra màn hình nh hình 19 dới đây:

Hình 19

Trang 20

b) Nhập dữ liệu

Một trong những tơng tác thờng gặp là chơng trình yêu cầu nhập dữ liệu.Chơng trình sẽ tạm ngừng để chờ ngời dùng "nhập dữ liệu" từ bàn phím hay bằngchuột Hoạt động tiếp theo của chơng trình sẽ tuỳ thuộc vào dữ liệu đợc nhập vào

Ví dụ, chơng trình yêu cầu nhập năm sinh từ bàn phím Khi đó ta cần gõ một

số tự nhiên ứng với năm sinh Sau khi nhấn phím Enter để xác nhận, chơng trình sẽtiếp tục hoạt động

Hình 20

Hai câu lệnh Pascal dới đây sẽ cho kết quả nh hình trên:

write('Ban hay nhap nam sinh:');

read(NS);

c) Chơng trình tạm ngừng

Có hai chế độ tạm ngừng của chơng trình: Tạm ngừng trong một khoảng thờigian nhất định và tạm ngừng cho đến khi ngời dùng nhấn phím

Ví dụ 4 Giả sử trong chơng trình Pascal có các câu lệnh sau:

Writeln('Cac ban cho 2 giay nhe ');

Trang 21

d) Hộp thoại

Hộp thoại đợc sử dụng nh một công cụ cho việc giao tiếp ngời-máy tínhtrong khi chạy chơng trình Ví dụ, khi ngời dùng thao tác để thoát khỏi chơngtrình đang chạy, hộp thoại dạng sau đây có thể xuất hiện:

Hình 23

Khi đó, nếu nháy chuột vào nút Đồng ý, chơng trình sẽ kết thúc còn nháy nút

Hủy lệnh, chơng trình vẫn tiếp tục nh bình thờng

Ghi nhớ

1 Các ngôn ngữ lập trình thờng phân chia dữ liệu cần xử lí theo các kiểu

khác nhau, với các phép toán có thể thực hiện trên từng kiểu dữ liệu đó

2 Quá trình trao đổi dữ liệu hai chiều giữa ngời và máy tính khi chơng trình

hoạt động thờng đợc gọi là giao tiếp hoặc tơng tác ngời- máy

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

1. Hãy nêu ít nhất hai kiểu dữ liệu và một phép toán có thể thực hiện đợctrên một kiểu dữ liệu, nhng phép toán đó không có nghĩa trên kiểu dữliệu kia

2. Dãy chữ số 2010 có thể thuộc những kiểu dữ liệu nào?

3. Hãy phân biệt ý nghĩa của các câu lệnh Pascal sau đây:

Trang 22

1 Mục đích, yêu cầu

• Luyện tập soạn thảo, chỉnh sửa chơng trình, biên dịch, chạy và xemkết quả hoạt động của chơng trình trong môi trờng Turbo Pascal

• Thực hành với các biểu thức số học trong chơng trình Pascal

2 Nội dung

Bài 1 Luyện tập gõ các biểu thức số học trong chơng trình Pascal.

a) Viết các biểu thức toán học sau đây dới dạng biểu thức trong Pascal:

+ −

Lu ý: Chỉ đợc dùng dấu ngoặc đơn để nhóm các phép toán.

b) Khởi động Turbo Pascal và gõ chơng trình sau để tính các biểu thức trên:

begin

writeln('15*4-30+12 =',15*4-30+12);

writeln('(10+5)/(3+1)-18/(5+1) =',(10+5)/(3+1)-18/(5+1)); writeln('(10+2)*(10+2)/(3+1)=',(10+2)*(10+2)/(3+1));

write('((10+2)*(10+2)-24)/(3+1)=',((10+2)*(10+2)-24)/(3+1)); readln

end.

Lu ý: Các biểu thức Pascal đợc đặt trong câu lệnh writeln để in ra kết quả

Em sẽ có cách viết khác sau khi làm quen với khái niệm biến ở bài 4

c) Lu chơng trình với tên CT2.pas Dịch, chạy chơng trình và kiểm tra kết quảnhận đợc trên màn hình

Bài 2 Tìm hiểu các phép chia lấy phần nguyên và phép chia lấy phần d với số

nguyên Sử dụng các câu lệnh tạm ngừng chơng trình

a) Mở tệp mới và gõ chơng trình sau đây:

uses crt;

Trang 23

clrscr;

writeln('16/3 =', 16/3);

writeln('16 div 3 =',16 div 3);

writeln('16 mod 3 =',16 mod 3);

writeln('16 mod 3 = ',16-(16 div 3)*3);

writeln('16 div 3 = ',(16-(16 mod 3))/3);

d) Thêm câu lệnh readln vào chơng trình (trớc từ khoá end) Dịch và chạy lạichơng trình Quan sát kết quả hoạt động của chơng trình Nhấn phím Enter

để tiếp tục

Bài 3 Tìm hiểu thêm về cách in dữ liệu ra màn hình.

Mở lại tệp chơng trình CT2.pas và sửa ba lệnh cuối (trớc từ khoá end) thành:writeln((10+5)/(3+1)-18/(5+1):4:2);

delay(x) tạm ngừng chơng trình trong vòng x phần nghìn giây, sau đó tự

động tiếp tục chạy

read hoặc readln tạm ngừng chơng trình cho đến khi ngời dùng nhấnphím Enter

3 Câu lệnh Pascal writeln(<giá trị thực>:n:m) đợc dùng để điều khiểncách in các số thực trên màn hình; trong đó giá trị thực là số hay biểu thức

số thực và n, m là các số tự nhiên n quy định độ rộng in số, còn m là số chữ

số thập phân Lu ý rằng các kết quả in ra màn hình đợc căn thẳng lề phải

Bài 4 Sử DụNG biến TRONG CHƯƠNG TRìNH

1 Biến là công cụ trong lập trình

Hoạt động cơ bản của chơng trình máy tính là xử lí dữ liệu Trớc khi đợcmáy tính xử lí, mọi dữ liệu nhập vào đều đợc lu trong bộ nhớ của máy tính Ví dụ,

Trang 24

nếu muốn cộng hai số a và b, trớc hết hai số đó sẽ đợc nhập và lu trong bộ nhớmáy tính, sau đó máy tính sẽ thực hiện phép cộng a + b

Để chơng trình luôn biết chính xác dữ liệu cần xử lí đợc lu ở vị trí nào trong

bộ nhớ, các ngôn ngữ lập trình cung cấp một công cụ lập trình rất quan trọng Đó

là biến nhớ, hay đợc gọi ngắn gọn là biến

Trong lập trình, biến đợc dùng để lu trữ dữ liệu và dữ liệu đợc biến lu trữ có

thể thay đổi trong khi thực hiện chơng trình

Dữ liệu do biến lu trữ đợc gọi là giá trị của biến

Có thể so sánh vai trò của biến đối với ngời viết chơng trình giống nh chiếc

cọ vẽ của ngời hoạ sĩ, chiếc búa của bác thợ hay chiếc bút của học sinh Không thểviết đợc chơng trình để giải nhiều bài toán, nếu không sử dụng biến

Chúng ta hãy xét một số ví dụ để hiểu vai trò biến nhớ trong lập trình

Ví dụ này cũng cho thấy, một cách hình ảnh, có thể xem hai biến XY

nh là "tên" của các vùng nhớ chứa các giá trị tơng ứng

Trang 25

Ví dụ 2 Giả sử cần tính giá trị của các biểu thức 100 50

X ← 100 + 50

Y ← X/3

Z ← X/5

Hình 25

2 Khai báo biến

Tất cả các biến dùng trong chơng trình cần phải đợc khai báo ngay trongphần khai báo của chơng trình Việc khai báo biến gồm:

- Khai báo tên biến;

- Khai báo kiểu dữ liệu của biến

Tên biến phải tuân theo quy tắc đặt tên của ngôn ngữ lập trình

Ví dụ 3 Hình 26 là một ví dụ về cách khai báo biến trong Pascal:

Hình 26

Trong ví dụ trên:

- var là từ khoá của ngôn ngữ lập trình dùng để khai báo biến,

- m, n là các biến có kiểu nguyên (integer),

- S, dientich là các biến có kiểu thực (real),

- thong_bao là biến kiểu xâu (string)

Tuỳ theo ngôn ngữ lập trình, cú pháp khai báo biến có thể khác nhau

3 Sử dụng biến trong chơng trình

Sau khi khai báo, ta có thể sử dụng các biến trong chơng trình Các thao tác

có thể thực hiện với các biến là:

- Gán giá trị cho biến;

- Tính toán với các biến

Kiểu dữ liệu của giá trị đợc gán cho biến phải trùng với kiểu của biến và khi

đợc gán một giá trị mới, giá trị cũ của biến bị xoá đi Ta có thể thực hiện việc gán

Trang 26

giá trị cho biến tại bất kì thời điểm nào trong chơng trình, do đó giá trị của biến cóthể thay đổi

Câu lệnh gán giá trị cho biến có dạng:

Tên biến ← Biểu thức cần gán giá trị cho biến;

trong đó, dấu ← biểu thị phép gán Ví dụ:

x ←− c/b (biến x nhận giá trị bằng − c/b);

x ← y (biến x đợc gán giá trị của biến y);

i ← i + 5 (biến i đợc gán giá trị hiện tại của i cộng thêm 5 đơn vị)

Tuỳ theo ngôn ngữ lập trình, cách viết lệnh gán cũng có thể khác nhau Ví

dụ, trong ngôn ngữ Pascal, ngời ta dùng phép gán là dấu kép ":=" để phân biệt vớiphép so sánh là dấu bằng (=)

Ví dụ 4 Bảng dới đây mô tả lệnh gán giá trị và tính toán với các biến trong Pascal:

X:=12; Gán giá trị số 12 vào biến nhớX.

X:=Y; Gán giá trị đã lu trong biến nhớYvào biến nhớX.

X:=(a+b)/2; Thực hiện phép toán tính trung bình cộng hai giá trị nằm

trong hai biến nhớab.Kết quả gán vào biến nhớX.

X:=X+1; Tăng giá trị của biến nhớXlên 1 đơn vị, kết quả gán trở

lại biếnX.

4 Hằng

Ngoài công cụ chính để lu trữ dữ liệu là biến, các ngôn ngữ lập trình còn cócông cụ khác là hằng Khác với biến, hằng là đại lợng có giá trị không đổi trongsuốt quá trình thực hiện chơng trình

Giống nh biến, muốn sử dụng hằng, ta cũng cần phải khai báo tên của hằng.Tuy nhiên hằng phải đợc gán giá trị ngay khi khai báo

Dới đây là ví dụ khai báo hằng trong Pascal:

Trang 27

1 Biến và hằng là các đại lợng đợc đặt tên dùng để lu trữ dữ liệu Giá trị của

biến có thể thay đổi, còn giá trị của hằng đợc giữ nguyên trong suốt quátrình thực hiện chơng trình

2 Biến và hằng phải đợc khai báo trớc khi sử dụng.

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

1. Giả sử A đợc khai báo là biến với kiểu dữ liệu số thực, X là biến vớikiểu dữ liệu xâu Các phép gán sau đây có hợp lệ không?

c) X:= '3242'; d) A:= 'Ha Noi'

2. Nêu sự khác nhau giữa biến và hằng Cho một vài ví dụ về khai báobiến và hằng

3. Giả sử ta đã khai báo một hằng Pi với giá trị 3.14 Có thể gán lại giátrị 3.1415 cho Pi trong phần thân chơng trình đợc không? Tại sao?

4. Trong Pascal, khai báo nào sau đây là đúng?

Trang 28

write(b);

readln

end

6. Hãy cho biết kiểu dữ liệu của các biến cần khai báo dùng để viết

ch-ơng trình để giải các bài toán dới đây:

a) Tính diện tích S của hình tam giác với độ dài một cạnh a và chiềucao tơng ứng h (a và h là các số tự nhiên đợc nhập vào từ bàn phím).b) Tính kết quả c của phép chia lấy phần nguyên và kết quả d của phépchia lấy phần d của hai số nguyên a và b

Bài thực hành 3

Khai báo và sử dụng biến

1 Mục đích, yêu cầu

Bớc đầu làm quen cách khai báo và sử dụng biến trong chơng trình

Char Các kí tự trong bảng chữ cái.

Cú pháp khai báo biến:

var < danh sách biến > : <kiểu dữ liệu>;

trong đó:

- danh sách biến là danh sách một hoặc nhiều tên biến và đợc cách nhau

bởi dấu phẩy (,)

- kiểu dữ liệu là một trong các kiểu dữ liệu của Pascal.

Ví dụ:

var X,Y: byte;

var So_nguyen: integer;

var Chieu_cao, Can_nang: real;

var Ho_va_Ten: string;

Bài 1 Viết chơng trình Pascal có khai báo và sử dụng biến.

Trang 29

Bài toán: Một cửa hàng cung cấp dịch vụ bán hàng thanh toán tại nhà.

Khách hàng chỉ cần đăng kí số lợng mặt hàng cần mua, nhân viên cửa hàng

sẽ trả hàng và nhận tiền thanh toán tại nhà khách hàng Ngoài trị giá hànghoá, khách hàng còn phải trả thêm phí dịch vụ Hãy viết chơng trình Pascal

để tính tiền thanh toán trong trờng hợp khách hàng chỉ mua một mặt hàngduy nhất

Gợi ý: Công thức cần tính:

Tiền thanh toán = Đơn giá ì Số lợng + Phí dịch vụ

a) Khởi động Pascal Gõ chơng trình sau và tìm hiểu ý nghĩa của từng câu lệnhtrong chơng trình:

thongbao:='Tong so tien phai thanh toan : ';

{Nhap don gia va so luong hang}

write('Don gia = '); readln(dongia);

write('So luong = ');readln(soluong);

b) Lu chơng trình với tên TINHTIEN.PAS Dịch và chỉnh sửa các lỗi gõ, nếu có

c) Chạy chơng trình với các bộ dữ liệu (đơn giá và số lợng) nh sau (1000, 20),(3500, 200), (18500, 123) Kiểm tra tính đúng của các kết quả in ra

d) Chạy chơng trình với bộ dữ liệu (1, 35000) Quan sát kết quả nhận đợc Hãythử đoán lí do tại sao chơng trình cho kết quả sai

Bài 2 Thử viết chơng trình nhập các số nguyên x và y, in giá trị của x và y ra màn

hình Sau đó hoán đổi các giá trị của x và y rồi in lại ra màn hình giá trị của

Trang 30

TổNG KếT

1 Cú pháp khai báo biến trong Pascal:

var <danh sách biến>: <kiểu dữ liệu>;

trong đó danh sách biến gồm tên các biến và đợc cách nhau bởi dấu phẩy

2 Cú pháp lệnh gán trong Pascal:

<biến>:= <biểu thức>

3 Lệnh read(<danh sách biến>) hay readln(<danh sách biến>), trong đó

danh sách biến là tên các biến đã khai báo, đợc sử dụng để nhập dữ liệu

từ bàn phím Sau khi nhập dữ liệu cần nhấn phím Enter để xác nhận Nếugiá trị nhập vào vợt quá phạm vi của biến, nói chung kết quả tính toán sẽsai

4 Nội dung chú thích nằm trong cặp dấu {} bị bỏ qua khi dịch chơngtrình Các chú thích đợc dùng để làm cho chơng trình dễ đọc, dễ hiểu.Ngoài ra có thể sử dụng cặp các dấu (**) để tạo chú thích

Trang 31

Bài 5 Từ BàI TOáN ĐếN CHƯƠNG TRìNH

1 Bài toán và xác định bài toán

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 đợctrong 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ơnnhiề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 sosánh chiều cao của hai bạn Long và Trang, cũng là những ví dụ về bài toán.Chúng ta có thể 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

Để giải quyết đợc một bài toán cụ thể, ngời ta cần xác định bài toán, tức làxác định rõ các điều kiện cho trớc và kết quả cần thu đợc

Ví dụ 1 Xét các bài toán tính diện tích hình tam giác, tìm đờng đi tránh các điểm

nghẽn giao thông trong giờ cao điểm và nấu một món ăn

a) Để tính diện tích hình tam giác:

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

- Kết quả cần thu đợc: Diện tích hình tam giác

b) Đối với bài toán khắc phục nghẽn giao thông:

- Điều kiện cho trớc: Vị trí điểm nghẽn giao thông và các con đờng có thể

đi từ vị trí hiện tại tới vị trí cần tới;

- Kết quả cần thu đợc: Đờng đi từ vị trí hiện tại tới vị trí cần tới mà khôngqua điểm nghẽn giao thông

c) Đối với bài toán nấu một món ăn:

- Điều kiện cho trớc: Cá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

Xác định bài toán là bớc đầu tiên và là bớc rất quan trọng trong việc giải bàitoán

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

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ệctiế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ầnthiết dới sự chỉ dẫn của con ngời thông qua các câu lệnh cụ thể Do vậy, việc dùngmáy tính giải một bài toán nào đó chính là đa cho máy tính dãy hữu hạn các thaotá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 đợckế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

Trang 32

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ộtbài toán cụ thể, tức thuật toán, là t duy sáng tạo của con ngời Tuy nhiên, việc môtả thuật toán cha đủ đối với máy tính mà cần diễn đạt thuật toán dới dạng máy tính

có thể hiểu và thực hiện đợc Kết quả diễn đạt thuật toán là chơng trình đợc viếttrong 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ờigiải của bài toán (h 28)

Hình 28

Nói một cách khác, thuật toán là các bớc để giải một bài toán, còn chơngtrình chỉ là thể hiện của thuật toán trong một ngôn ngữ lập trình cụ thể

Quá trình giải bài toán trên máy tính gồm các bớc sau:

 Xác định bài toán: Xác định rõ điều kiện cho trớc của bài toán (thông tin

vào - INPUT) và kết quả cần nhận đợc (thông tin ra -OUTPUT)

 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 đó để giải bài toán đã cho (tức mô tả thuật

toán)

 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 cụ thể sao cho máy tính có thể hiểu và thực hiện Cần phải lu ý rằng, để giải một bài toán có thể có nhiều thuật toán khácnhau, 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ả điều kiện cho trớc và kết quả cần nhận đợc kèmtheo để dễ nhận biết thuật toán đó dùng để giải bài toán nào

3 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 chúng ta thờng làm mà không phải suy nghĩ nhiều, tuynhiê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ể mô tả dới dạng thuật toán nh sau:

INPUT: Trà, nớc sôi, ấm và chén

OUTPUT: Chén trà đã pha để mời khách

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 đến 4 phút.

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

Trang 33

Việc liệt kê các bớc nh trên là một cách thờng dùng để mô tả thuật toán.Nếu không có mô tả gì khác trong thuật toán, các bớc của thuật toán đợc thực hiệnmộ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, với cùng khả năng và điều kiện nh nhau,khi thực hiện thuật toán cũng đều đạt đợc kết quả nh nhau Để minh hoạ, chúng taxé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":

INPUT: Các số b và c

OUTPUT: Nghiệm của phơng trình bậc nhất

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

Bớc 2 Cho một chút muối và hành tơi thái nhỏ vào bát trứng Dùng đũa

quấy mạnh cho đến khi đều

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 Đun

tiếp trong khoảng 1 phút

Bớc 4 Lật mặt trên của miếng trứng úp xuống dới Đun 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àmbế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ự làm cho mình món trứng tráng Tóm lại, 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 thiết từ những điều kiện cho trớc

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

Ví dụ 2 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 29 dới đây:

Trang 34

Hình 29

INPUT: Số a là 1

2 chiều rộng của hình chữ nhật và là bán kính của hình bánnguyệt, b là chiều dài của hình chữ nhật

OUTPUT: Diện tích của hình A

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:

Ví dụ 3 Tính tổng của 100 số tự nhiên đầu tiên

INPUT: Dãy 100 số tự nhiên đầu tiên: 1, 2, 100

OUTPUT: Giá trị của tổng 1+ 2+ + 100

ý tởng để giải bài toán trên là dùng một 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 0.Tiếp theo lần lợt thêm các giá trị 1, 2, 3, , 100 vào SUM Vấn đề là ở chỗ tổchức việc "lần lợt thêm vào" nh thế nào? Cách dễ nhận thấy nhất là thực hiện liêntiếp 100 phép cộng:

Trang 35

đợ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:

Bớc 1 SUM ← 0; i ← 0

Bớc 2 i ← i + 1

Bớc 3 Nếu i ≤ 100, thì SUM ← SUM + i và quay lại bớc 2

Bớc 4 Thông báo kết quả và kết thúc thuật toán.

Hình 30

Ví dụ 4 Đổi giá trị của hai biến x và y.

INPUT: Hai biến x, y có giá trị tơng ứng là a và b

OUTPUT: Hai biến x, y có giá trị tơng ứng là b và a

Trong bài 2 của bài thực hành 3, chúng ta đã tìm hiểu và viết chơng trìnhhoán đổi các giá trị của hai biến x và y Ví dụ này sẽ mô tả thuật toán để viết ch-

ơng trình đó

Ta không thể thực hiện trực tiếp hai phép gán: x ← y và y ← x, bởi sau phépgán thứ nhất, giá trị của x đã bị thay bằng giá trị của y và kết quả của hai phép gánnày là cả hai biến x và y cùng có giá trị ban đầu của biến y Vì thế, cần dùng mộtbiến trung gian, ví dụ biến z, để lu tạm thời giá trị của biến x Do vậy, ta có thuậttoán sau:

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

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

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à a, giá

trị ban đầu của biến x}

Trang 36

Hình 31

Ví dụ 5 Cho hai số thực a và b Hãy cho biết kết quả so sánh hai số đó dới dạng

"a lớn hơn b", "a nhỏ hơn b" hoặc "a bằng b"

INPUT: Hai số thực a và b

OUTPUT: Kết quả so sánh

Bài toán rất đơn giản Thoạt đầu ta thấy thuật toán sau đây có thể giải quyếtbài toán này:

Bớc 1 Nếu a > b, kết quả là "a lớn hơn b"

Bớc 2 Nếu a < b, kết quả là "a nhỏ hơn b"; ngợc lại, kết quả là "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ókết quả "a lớn hơn b", nhng đến bớc 2, khi kiểm tra a < b ta lại có tiếp kết quả "abằng b" và nh thế ta nhận đợc hai kết quả

Vì vậy, để có kết quả đúng, ta cần mô tả chính xác hơn điều kiện kết thúcthuật toán nh sau:

Bớc 1 Nếu a > b, kết quả là "a lớn hơn b" và chuyển đến bớc 3

Bớc 2 Nếu a < b, kết quả là "a nhỏ hơn b"; ngợc lại, kết quả là "a bằng b" Bớc 3 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 MAX để lu giá trị phần tử lớn nhất của dãy A Việc xác định

MAX có thể đợc thực hiện nh sau: Đầu tiên gán giá trị a1 cho biến MAX Tiếp theo,lần lợt so sánh các số a2, , an của dãy A với MAX Nếu ai > MAX, ta gán ai cho

MAX Từ đó, ta có thuật toán sau:

Bớc 4 Nếu ai > MAX, MAX←a i Trong trờng hợp ngợc lại (MAX ≥ ai), giữ

nguyên MAX Quay lại bớc 2

Trang 37

1 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)

Trang 38

2 Giải bài toán trên máy tính nghĩa là đa cho máy tính dãy hữu hạn các

thao tác đơn giản (thuật toán) mà nó có thể thực hiện đợc để cho ta kếtquả

3 Quá trình giải một bài toán trên máy tính gồm 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 là dãy hữu hạn 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 thu đợc từ những điều kiện cho trớc

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

1. 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

2. 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ệnthuậ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 cho biết 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 Hãy mô tả thuật toán đổi giá trị của các biến nóitrên để x và y theo thứ tự có giá trị tăng dần

5. Hãy mô tả thuật toán giải bài toán tính tổng các phần tử của dãy số

A = {a1, a2, , an} cho trớc

6. Hãy mô tả thuật toán tính tổng các số dơng trong dãy số A = {a1, a2, ,

a n} cho trớc

Bài 6 CÂU LệNH ĐIềU KIệN

1 Hoạt động phụ thuộc vào điều kiện

Trong cuộc sống hằng ngày, chúng ta thực hiện phần lớn các hoạt động mộtcách tuần tự theo thói quen hoặc theo kế hoạch đã đợc xác định từ trớc Ví dụ:

• Mỗi sáng em thức dậy, tập thể dục buổi sáng, làm vệ sinh cá nhân, ănsáng và đến trờng,

• Long thờng đi đá bóng cùng các bạn vào sáng chủ nhật hằng tuần

Tuy nhiên các hoạt động của con ngời thờng bị tác động bởi sự thay đổi củacác hoàn cảnh cụ thể Nhiều hoạt động sẽ bị thay đổi, bị điều chỉnh cho phù hợp

• "Nếu" em bị ốm, em sẽ không tập thể dục buổi sáng

Trang 39

• "Nếu" trời không ma vào ngày chủ nhật, Long đi đá bóng; ngợc lại Long

sẽ ở nhà giúp mẹ dọn dẹp nhà cửa

Trong cuộc sống hằng ngày, từ "nếu" trong các câu trên đợc dùng để chỉ một

"điều kiện" Các điều kiện đó là: "Em bị ốm" hoặc "Trời ma" Hoạt động tiếp theo

của em hoặc của bạn Long sẽ phụ thuộc vào các điều kiện đó có đợc xảy ra haykhông

Có thể liệt kê đợc rất nhiều tình huống tơng tự khác Chẳng hạn khi đi trên

đờng phố nếu gặp đèn đỏ, ta phải dừng lại; nếu khách đến nhà, em pha trà mờikhách,

Tóm lại, có những hoạt động chỉ đợc thực hiện khi một điều kiện cụ thể đợcxảy ra Điều kiện thờng là một sự kiện đợc mô tả sau từ "nếu"

2 Tính đúng hoặc sai của các điều kiện

Mỗi điều kiện nói trên đợc mô tả dới dạng một phát biểu Hoạt động tiếptheo phụ thuộc vào kết quả kiểm tra phát biểu đó đúng hay sai Vậy kết quả kiểmtra có thể là gì?

Trời ma? Long nhìn ra ngoài trời và

thấy trời ma. Đúng Long ở nhà (không đi đábóng).

Em bị ốm? Buổi sáng thức dậy, em thấy

mình hoàn toàn khoẻ mạnh. Sai Em tập thể dục buổi sáng nhthờng lệ.

Khi kết quả kiểm tra là đúng, ta nói điều kiện đợc thoả mãn, còn khi kết quảkiểm tra là sai, ta nói điều kiện không thoả mãn

Ngoài những điều kiện gắn với các sự kiện đời thờng nh trên, trong Tin họcchúng ta có thể gặp nhiều dạng điều kiện khác, ví dụ:

Nếu nháy nút ở góc trên, bên phải cửa sổ, (thì) cửa sổ sẽ đợc đóng lại.

Nếu X > 5, (thì hãy) in giá trị của X ra màn hình.

Nếu (ta) nhấn phím Pause/Break, (thì) chơng trình (sẽ bị) ngừng

3 Điều kiện và phép so sánh

Để so sánh hai giá trị số hoặc hai biểu thức có giá trị số, chúng ta đã sử dụngcác kí hiệu toán học nh: =, ≠, <, ≤, > và ≥ Chúng ta biết rằng các phép so sánh cókết quả đúng hoặc sai

Các phép so sánh có vai trò rất quan trọng trong việc mô tả thuật toán và lậptrình Chúng thờng đợc sử dụng để biểu diễn các điều kiện Phép so sánh cho kếtquả đúng có nghĩa điều kiện đợc thoả mãn; ngợc lại, điều kiện không đợc thoảmãn

Ví dụ 1 Ta muốn chơng trình in ra màn hình giá trị lớn hơn trong số hai giá trị của

các biến a và b Khi đó giá trị của biến a hoặc b đợc in ra phụ thuộc vào phép sosánh a > b là đúng hay sai:

Trang 40

"Nếu a > b, in giá trị của biến a ra màn hình;

ngợc lại, in giá trị của biến b ra màn hình."

Trong trờng hợp này điều kiện đợc biểu diễn bằng phép so sánh a > b

Tơng tự, khi giải phơng trình bậc nhất dạng tổng quát bx + c = 0, để tínhnghiệm của phơng trình chúng ta cần kiểm tra các điều kiện đợc cho bằng cácphép so sánh b = 0 và c ≠ 0

4 Cấu trúc rẽ nhánh

Ta đã biết rằng, khi thực hiện một chơng trình, máy tính sẽ thực hiện tuần tựcác câu lệnh, từ câu lệnh đầu tiên đến câu lệnh cuối cùng Trong nhiều trờng hợp,chúng ta muốn máy tính thực hiện một câu lệnh nào đó, nếu một điều kiện cụ thể

đợc thoả mãn; ngợc lại, nếu điều kiện không đợc thoả mãn thì bỏ qua câu lệnhhoặc thực hiện một câu lệnh khác

Ví dụ 2. Một hiệu sách thực hiện đợt khuyến mãi lớn với nội dung sau: Nếu mua

sách với tổng số tiền ít nhất là 100 nghìn đồng, khách hàng sẽ đợc giảm 30% tổng

số tiền phải thanh toán Hãy mô tả hoạt động tính tiền cho khách

Ta có thể mô tả hoạt động tính tiền cho khách hàng bằng các bớc dới đây:

Bớc 1 Tính tổng số tiền T khách hàng đã mua sách.

Bớc 2 Nếu T ≥ 100000, số tiền phải thanh toán = 70% ì T

Bớc 3 In hoá đơn Tính tiền cho khách hàng tiếp theo

Cách thể hiện hoạt động phụ thuộc vào điều kiện nh trên đợc gọi là cấu trúc

rẽ nhánh dạng thiếu

Ví dụ 3. Trong ví dụ 2, chúng ta chỉ biết rằng nếu tổng số tiền không nhỏ hơn 100

nghìn đồng, khách hàng sẽ đợc giảm 30% tổng số tiền phải thanh toán Trong ờng hợp khách hàng chỉ mua với tổng số tiền không đến 100 nghìn đồng, việc tínhtiền cho khách hàng kết thúc Giả sử thêm vào đó, cửa hàng giảm 10% cho nhữngkhách hàng chỉ mua với tổng số tiền không đến 100 nghìn đồng

tr-Khi đó, cần phải tính lại tiền cho khách trong cả hai trờng hợp, tổng số tiềnkhông nhỏ hơn 100 nghìn đồng và tổng số tiền không đến 100 nghìn đồng Thuậttoán có thể đợc sửa lại nh sau:

Bớc 1 Tính tổng số tiền T khách hàng đã mua sách.

Bớc 2 Nếu T ≥ 100000, số tiền phải thanh toán = 70% ì T; ngợc lại, số tiềnphải thanh toán = 90% ìT.

Bớc 3 In hoá đơn Tính tiền cho khách hàng tiếp theo

Cách thể hiện hoạt động phụ thuộc vào điều kiện nh trong ví dụ 2 đợc gọi là

cấu trúc rẽ nhánh dạng thiếu (h 32a), còn trong ví dụ 3 đợc gọi là cấu trúc rẽ nhánh dạng đầy đủ (h 32b)

Ngày đăng: 06/07/2014, 15:00

Xem thêm

HÌNH ẢNH LIÊN QUAN

Hình 1. Rô-bốt  &#34;nhặt rác&#34; - SGK tin học 8
Hình 1. Rô-bốt &#34;nhặt rác&#34; (Trang 2)
Hình 2. Ví dụ về chơng trình  Tại sao cần viết chơng trình? - SGK tin học 8
Hình 2. Ví dụ về chơng trình Tại sao cần viết chơng trình? (Trang 3)
Hình 17. Lỗi 10: Không tìm thấy kết thúc tệp - SGK tin học 8
Hình 17. Lỗi 10: Không tìm thấy kết thúc tệp (Trang 14)
1. Bảng chọn File chứa một số lệnh để làm việc với tệp: - SGK tin học 8
1. Bảng chọn File chứa một số lệnh để làm việc với tệp: (Trang 15)
Ví dụ 1. Hình 18 dới đây minh hoạ kết quả thực hiện của một chơng trình: in ra - SGK tin học 8
d ụ 1. Hình 18 dới đây minh hoạ kết quả thực hiện của một chơng trình: in ra (Trang 16)
Ví dụ 3. Bảng 4 dới đây cho thấy kí hiệu của các phép so sánh trong ngôn ngữ - SGK tin học 8
d ụ 3. Bảng 4 dới đây cho thấy kí hiệu của các phép so sánh trong ngôn ngữ (Trang 19)
Hình hoặc nháy chuột lên một đối tợng để tạo điểm thuộc đối tợng này. - SGK tin học 8
Hình ho ặc nháy chuột lên một đối tợng để tạo điểm thuộc đối tợng này (Trang 87)
Hình dới đây là hộp thoại tính chất của hình lăng trụ đều. Chúng ta có thể thay đổi hai tham số quan trọng của hình là chiều cao (height) và độ dài cạnh đáy - SGK tin học 8
Hình d ới đây là hộp thoại tính chất của hình lăng trụ đều. Chúng ta có thể thay đổi hai tham số quan trọng của hình là chiều cao (height) và độ dài cạnh đáy (Trang 105)
2. Kéo thả chuột để thực hiện thao tác &#34;gấp&#34; hình phẳng này thành hình không gian tơng ứng. - SGK tin học 8
2. Kéo thả chuột để thực hiện thao tác &#34;gấp&#34; hình phẳng này thành hình không gian tơng ứng (Trang 106)

TỪ KHÓA LIÊN QUAN

w