Dai Cuong A1-cn

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Dai Cuong A1-cn as PDF for free.

More details

  • Words: 9,394
  • Pages: 166
A1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRUNG TÂM PT CNTT – TRUNG TÂM ĐÀO TẠO TRÍ ĐỨC ************************************

ĐẠI CƯƠNG A 1 Thời lượng: 33 tiết LT + 33 tiết TH

Tài liệu tham khảo: 1. Ngôn ngữ lập trình Pascal 7.0 - Phạm Văn Ất 2. Ngôn ngữ lập trình Pascal – Quách Tuấn Ngọc 3. Giáo trình tin học đại cương – ĐH QG TPHCM 1/169

A1

NỘI DUNG CHƯƠNG TRÌNH

•Phần I: Tổng quan về máy tính •Phần II: Tổng quan giải quyết vấn đề-bài toán trên máy tính •Phần III: Lập trình bằng ngôn ngữ Pascal

2/169

A1

Phần I: TỔNG QUAN VỀ MÁY TÍNH

I.Giới thiệu •Máy tính là công cụ xử lý thông tin. •Các thao tác chính: –Nhận thông tin(Receive input): thu nhận thông tin từ bên ngoài vào máy tính  chuyển đổi thông tin từ thế giới thực sang dạng biểu diễn trong máy thông qua các thiết bị nhập –Xử lý thông tin( process information): thực hiện biến đổi, phân tích, tổng hợp, tra cứu,… thông tin ban đầu để có thông tin mong muốn 3/169

A1

•Các thao tác chính: –Xuất thông tin(procedure output): đưa các thông tin đã được xử lý ra trở lại thế giới bên ngoài, thực hiện qua các thiết bị đầu ra –Lưu trữ thông tin(store information): ghi lại các thông tin đã được xử lý để có thể sử dụng lại trong các lần sau

4/169

A1

II. Thông tin – biểu diễn thông tin

•Thông tin trong tin học được hiểu là các con số có thể rời rạc hay liên tục  Thông tin được mã hóa dưới dạng số •Các thông tin khi đưa vào máy tính đều được số hoá thành từng bít(binary digit) •Bít có 2 giá trị on- off tương ứng với sự tắt mở của các mạch điện trong máy tính. Bít là đơn vị đo thông tin nhỏ nhất trong tin học •Bít được xây dựng dựa trên trạng thái chuyển mạch của thiết bị và đại diện cho số theo hệ đếm nhị phân biểu diễn bằng 2 ký tự 0 và 1 •Đơn vị lưu trữ thông tin là Bit (B)  là đơn vị nhỏ nhất lưu trữ một giá trị 0 hoặc 1 5/169

A1

•Các đơn vị đo bội số khác: 1 Byte = 8 bits 1 KB (KiloByte) = 2 10 Bytes = 1024 Bytes 1 MB (MegaByte) = 2 10 KB = 1.048.576 Bytes 1 GB (GigaByte) = 2 10 MB = 1.073.741.824 Bytes

6/169

A1

III. Hệ đếm và các phép tính

•Hệ đếm là một tập hợp các chữ số và chữ cái để có thể biểu diễn được mọi số trong hệ đếm đó •Khái niệm: Các chữ số cơ bản của một hệ đếm là các chữ số tối thiểu để biểu diễn mọi số trong hệ đếm đó •ví dụ: –hệ đếm thập phân  cơ số 10: 0,1,2,3,4,5,6,7,8,9 –Hệ nhị phân  cơ số 2: 0 và 1 –Hệ thập lục phân  cơ số 16: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F –… 7/169

A1

•Cách biểu diễn giá trị trong hệ đếm –tất cả mọi giá trị thông tin được biểu diễn dưới dạng sau Xb=an an-1 … a1a0 = anbn + an-1bn-1+…+ a1b1 + a0.b0 –trong đó: b là hệ đếm cơ số cần biểu diễn và a0,a1,a2, …, an là các chữ số cơ bản trong hệ đếm biểu diễn giá trị –Ví dụ:

Hệ thập phân X=123= 1*102+2*101+3*100 Hệ nhị phân X=110= 1*22+1*21+0*20 8/169

A1

•Quy tắc 1: để chuyển đổi một số từ hệ thập phân sang hệ có cơ số b (b ≠ 10) thực hiện theo các sau: lấy số thập phân lần lượt chia cho cơ số b cho đến khi phần thương của phép chia bằng 0 => kết quả chính là các phần dư của phép chia theo thứ tự ngược lại. •Ví dụ: cho X=610

9/169

A1

•Quy tắc 2: để chuyển đổi một số từ hệ cơ số b về hệ thập phân ta sử dụng công thức Xb=an an-1 … a1a0 = anbn + an-1bn-1+…+ a1b1 + a0b0

•Ví dụ: cho X=1102 => chuyển X sang hệ thập phân

10/169

A1

•Quy tắc 3: Để chuyển đổi từ hệ nhị phân về hệ thập lục phân ta thực hiện như sau: nhóm lần lượt 4 bít từ phải sang trái, sau đó thay thế các nhóm 4 bit bằng giá trị tương ứng với hệ thập lục phân •ví dụ: chuyển X=11 10112 sang hệ cơ số thập lục phân

11/169

A1

•Quy tắc 4: Để chuyển đổi từ hệ thập lục phân sang hệ nhị phân ta thực hiện như sau: ứng với mỗi chữ số thập lục phân sẽ được biểu diễn dưới dạng 4 bít  mỗi chữ số thập lục phân sẽ được biểu diễn về cơ số nhị phân tương ứng •ví dụ: chuyển X=3B16 sang hệ cơ số nhị phân

12/169

A1

•Bảng chuyển đổi giữa các hệ số Hệ thập phân

Hệ nhị phân

Thập lục phân

0

0

0

1

1

1

2

10

2

3

11

3

4

100

4

5

101

5

6

110

6

7

111

7

13/169

A1

•Bảng chuyển đổi giữa các hệ số Hệ thập phân

Hệ nhị phân

Thập lục phân

8

1000

8

9

1001

9

10

1010

A

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F

14/169

A1

IV. Cấu trúc tổng quan của máy tính Bộ nhớ ngoài

Bộ xử lý trung tâm Thiết bị vào

Bộ điều khiển

Bộ số học logic

Thiết bị ra

Bộ nhớ trong 15/169

A1

2.Bộ xử lý trung tâm • được gọi là CPU – Central Processing Unit • là đầu não của máy tính, tại đó diễn ra việc xử lý thông tin và điều khiển toàn bộ mọi hoạt động của máy tính

16/169

A1

2. Bộ xử lý trung tâm

•CPU gồm các bộ phận sau: –Bộ điều khiển(CU- control Unit): điều khiển các bộ phận khác của máy tính thực hiện chương trình –Bộ số học và logic(ALU- Arithmetic/ Logic Unit): thiết bị thực hiện các phép toán số học và logic –Thanh ghi(register): là vùng nhớ đặc biệt được CPU sử dụng để lưu trữ tạm thời các lệnh và dữ liệu đang được xử lý 17/169

A1

3. Bộ nhớ chính

•Bộ nhớ chính (Bộ nhớ trong) dùng để lưu trữ chương trình và dữ liệu đưa vào cũng như dữ liệu thu được trong quá trình thực hiện chương trình.

18/169

A1

•Bộ nhớ trong gồm hai phần:

–ROM (Read Only Memory - Bộ nhớ chỉ đọc): là bộ nhớ chứa chương trình và dữ liệu của nhà sản xuất máy tính  không thay đổi và không mất khi tắt máy –RAM (Random Access Memory Bộ nhớ truy nhập ngẫu nhiên): chứa các chương trình và dữ liệu của người sử dụng khi máy đang hoạt động  thông tin có thể đọc, ghi vào và sẽ mất ngay khi tắt máy

19/169

A1

4. Bộ nhớ ngoài

•Bộ nhớ ngoài dùng để lưu giữ lâu dài các thông tin và hỗ trợ cho bộ nhớ trong •Bộ nhớ ngoài thường dùng là: –Đĩa mềm –Đĩa cứng –Đĩa compact –Đĩa USB

20/169

A1

a. Đĩa mềm

-Kích thước 3,5 inch với dung lượng 1,44Mb -Phần ghi thông tin của một đĩa mềm là một tấm nhựa mỏng, được tráng từ, hình vành khăn. -Để định vị thông tin trên đĩa, đĩa được chia thành những hình quạt bằng nhau (sector) -Trên mỗi sector, thông tin được ghi trên các rãnh tròn đồng tâm gọi là các track. 21/169

A1

b. Đĩa cứng

-Đĩa cứng có dung lượng rất lớn và tốc độ đọc ghi rất nhanh -Phức tạp hơn đĩa mềm về mặt vật lý -Cách định vị thông tin tương tự như đĩa mềm

c. Đĩa Compact -có mật độ ghi thông tin rất các và khối lượng lớn -để ghi dữ liệu vào đĩa cần phải có ổ ghi và chương trình ghi đĩa

22/169

A1

5. Thiết bị vào

- là các thiết bị cho phép đưa thông tin vào máy tính a.Bàn phím - gồm các phím được phân hai loại: phím ký tự và phím chức năng - khi gõ một phím thì mã tương ứng của phím được truyền vào máy 23/169

A1

b.Chuột - dùng để thực hiện một lựa chọn nào đó  thay thế một số thao tác trên bàn phím c.Máy quét - là thiết bị đưa hình ảnh vào máy tính 24/169

A1

6. Thiết bị ra

a.Màn hình -cho thấy các kết quả được làm việc trên màn hình, gồm văn bản hay hình ảnh, hay các đoạn phim. b.máy in -để in kết quả lên giấy. có nhiều loại: in kim, in phun, in laser,… 25/169

A1

V. Tổng quan hệ điều hành

•Bất kỳ máy tính muốn hoạt động đều phải thông qua các chương trình gọi là hệ điều hành •Hệ điều hành hiện nay gồm: MS Dos NC – Norton command Window: Win 98, Win 2000, Win XP,..

•Hệ điều hành gồm tập các lệnh cơ sở điều khiển hoạt động xuất nhập dữ liệu. một phần sẽ được nạp ngay vào bộ nhớ khi máy khởi động và phần còn lại được nạp khi nào cần 26/169 thiết

A1

•Hệ điều hành điều khiển và phối hợp việc sử dụng phần cứng của các chương trình được người dùng sử dụng => tạo môi trường cho các phần mềm khác chạy trên đó •Chức năng của hệ điều hành khởi động máy tính quản lý phân phối và thu hồi bộ nhớ điều khiển việc thực thi các chương trình điều khiển các thiết bị trong, thiết bị ngoại vi quản lý thông tin và việc vào-ra thông tin 27/169

A1

VI. Tổng quan mạng máy tính

•mạng máy tính là hệ thống có thể liên kết hai hoặc nhiều máy tính lại với nhau •Các yêu tố của mạng máy tính phần cứng: mạng máy tính cho phép chia sẻ các phần cứng của máy tính => giảm giá thành và cho phép nhiều người cùng sử dụng cùng một thiết bị phần mềm: cho phép chia sẻ các thông tin và các chương trình phần mềm, tăng hiệu quả và năng suất con người: cho phép con người làm việc với nhau dễ dàng hơn 28/169

A1

•mạng máy tính có nhiều dạng và với quy mô khác nhau => chia thành hai loại: cục bộ và diện rộng •Mạng cục bộ - LAN: là mạng mang tính nội bộ thường nằm trong phạm vi một tòa nhà. Các máy tính nối với nhau theo nhiều cách tùy theo người quản trị mạng •mạng diện rộng – WAN: là mạng có phạm vi rộng lớn 29/169

A1 PHẦN

II:TỔNG QUAN GIẢI QUYẾT VẤN ĐỀ-BÀI TÓAN TRÊN MÁY TÍNH

I. Khái niệm về vấn đề và bài toán • Vấn đề là tập hợp các điều cần giải quyết trong thực tế • Bài toán là vấn đề mà để giải quyết vấn đề phải liên quan đến tính toán. Bài toán có: bài toán trong vật lý, trong toán học, trong kinh tế,… • Mọi vấn đề đều diễn tả bằng sơ đồ: A →B Trong đó: A: là giả thiết, điều kiện ban đầu của bài toán B: là kết luận hay mục tiêu cần đạt tới →: là phương pháp suy luận, giải pháp cần xác định 30/169

A1

II. Các bước giải quyết vấn đề bài toán bằng máy tính điện tử

•việc giải một bài toán trên máy tính điện tử là một quá trình phức tạp bao gồm nhiều giai đoạn và lập trình chỉ là một trong các giai đoạn. Gồm các bước •bước 1: xác định vấn đề - bài toán nhằm phát biểu chính xác vấn đề - bài toán => làm rõ những yêu cầu mà người sử dụng đòi hỏi

•bước 2: lựa chọn phương pháp giải có thể có nhiều cách khác nhau để giải quyết vấn đề. Các phương pháp có thể khác nhau về thời gian thực hiện, chi phí lưu trữ, độ chính xác,… => lựa chọn phương pháp thích hợp giải bài toán 31/169

A1

•bước 3: xây dựng thuật toán hoặc thuật giải xây dựng mô hình chặt chẽ, chính xác hơn và chi tiết hóa hơn phương pháp đã lựa chọn. xác định rõ ràng dữ liệu vào, ra cho các bước thực hiện cơ bản, đồng thời xác định trật tự thực hiện các bước tương ứng

•bước 4: cài đặt chương trình mô tả thuật giải bằng chương trình, bằng một ngôn ngữ cụ thể để có thể giải được bài toán

32/169

A1

•bước 5: hiệu chỉnh chương trình tiến hành chạy thử để phát hiện và điều chỉnh các sai sót của chương trình nếu tìm thấy có hai loại lỗi: lỗi cú pháp: do không tuân thủ đúng các nguyên tắc viết chương trình trên một ngôn ngữ lập trình cụ thể lỗi ngữ nghĩa: là lỗi làm sai lạc ý nghĩa hoặc dẫn đến bế tắc của chương trình.

•bước 6: thực hiện chương trình cho máy tính chạy chương trình đã được viết => phân tích kết quả thu được để khẳng định xem kết quả đó có phù hợp không?

33/169

A1

III. Thuật toán và thuật giải

1.Thuật toán • là một tập các lệnh hay chỉ thị nhằm hướng dẫn việc thực hiện một công việc nào đó • thuật toán bao gồm một dãy hữu hạn chỉ thị rõ ràng và có thể thi hành được để hướng dẫn thực hiện hành động nhằm đạt được mục tiêu đặt ra • => thuật toán là sự thể hiện của một phương pháp để giải quyết một vấn đề 34/169

A1

1. Thuật toán

•ví dụ: xây dựng thuật toán giải phương trình bậc hai 1.nhập hệ số a,b,c 2.tính D=b2 - 4*a*c 3.xét dấu D: nếu D>0: thực hiện tính nghiệm theo công thức x1=(-b-sqrt(D))/(2*a); x2=(-b+sqrt(D))/(2*a); Thông báo lên màn hình phương trình có hai nghiệm phân biệt Nếu D=0: thì thông báo phương trình có nghiệm kép – b/(2*a) Nếu D<0: thông báo phương trình vô nghiệm 35/169

A1

•Các đặc trưng của thuật toán: nhập: các thuật toán phải có các thông số đầu vào từ một tập xác định nào đó xuất: tương ứng với giá trị đầu vào sẽ có các giá trị kết quả tương ứng của bài toán tính xác định: các bước xác định phải chính xác rõ ràng tính hữu hạn: thuật giải phải cho ra lời giải sau một số hữu hạn các bước thực hiện tính hiệu quả: được đánh giá dựa trên khối lượng tính toán, không gian và thời gian được sử dụng tính tổng quát: thuật toán phải được áp dụng cho tất cả các bài toán có dạng như mong muốn chứ không chỉ áp dụng cho một trường hợp riêng lẻ 36/169

A1

2. Thuật giải

•khi giải các bài toán có một số tình huống sau: –có một số bài toán chưa có lời giải theo kiểu thuật toán và cũng không biết có tồn tại thuật toán hay không –có những bài toán được giải theo những cách vi phạm thuật toán nhưng vẫn được chấp nhận

•thuật giải được hình thành là sự mở rộng của thuật toán để giải một số bài toán trên. •thuật giải mở rộng trên hai tiêu chuẩn: –tính đúng đắn –tính xác định

•các loại thuật giải: đệ quy, trí tuệ nhân tạo, ngẫu nhiên

37/169

A1

IV. Biểu diễn thuật toán và thuật giải

•Để có thể mô tả một thuật toán cho người khác hay chuyển thuật toán cho máy tính => phải tìm cách biểu diễn thuật toán •Để biểu diễn thuật toán dùng ngôn ngữ, có các loại ngôn ngữ sau: ngôn ngữ tự nhiên ngôn ngữ lưu đồ ngôn ngữ tựa lập trình ngôn ngữ lập trình 38/169

A1

• Bằng lưu đồ: dùng các hình cơ bản để xây dựng lưu đồ để giải quyết bài toán

A

A Thực hiện công việc A

Phép thử B

B

Sai

Vào/Ra dữ liệu

Gọi Chương trình con A

Begin

End

Đúng

39/169

A1

• Ví dụ: tính tổng của N số nguyên đầu tiên Begin Đọc N S:=0; i:=0 S:=S+1 i:=i+1

Sai

i>N

Đúng

In S ra End

40/169

A1

V. Một số thuật toán thông dụng

1.Thuật toán số học: b.Thuật toán kiểm tra số nguyên tố: •Vấn đề: cho một số nguyên dương p. kiểm tra xem p có phải là một số nguyên tố không? •ý tưởng: nếu p=1: thì p không là số nguyên tố nếu p≠ 1: kiểm tra các giá trị k từ 2 đến p-1 nếu có k là ước của p thì kết luận p không là nguyên tố. Còn ngược lại, nếu không tồn tại k mà p chia kết cho k thì p là số nguyên tố 41/169

A1

a. Thuật toán kiểm tra số nguyên tố

• Nhập: số p nguyên dương • Xuất: kết luận p có nguyên tố hay không • Thuật toán: 1. if p=1 then begin xuất: p không là nguyên tố; dừng thuật toán end 2. co:=TRUE; 3. for k:=2 to p-1 do if (k là ước của p) then begin co:=FALSE; ngắt vòng lặp; end 4. if co=TRUE then xuất: p là số nguyên tố else xuất: p không là số nguyên tố

42/169

A1

b. Thuật toán tìm ước chung lớn nhất của hai số nguyên

•Vấn đề: cho hai số nguyên. tìm ước chung lớn nhất của hai số đó  (a,b)=? •ý tưởng: dựa vào mệnh đề sau; a. nếu a là một ước của b thì (a,b)=a b. (a,b)=(b,a) c. giả sử a là một số nguyên bất kỳ, b là một số nguyên khác 0. gọi r là số dư khi chia a cho b. Khi đó: (a,b) = (b,r)  ước chung lớn nhất của a và b bằng ước chung lớn nhất của b và r

43/169

A1

• • • •

nhập: hai số nguyên m và n điều kiện: m và n không đồng thời bằng không xuất: d là ước chung lớn nhất của m và n thuật toán: 1. if n=0 then begin d:=m; dừng thuật toán end 2. a:=m; 3. b:=n; 4. r:= a mod b; 5. while r <>0 do begin a:=b; b:=r; r:= a mod b; end 6. d:=b;

44/169

A1

2. Một số thuật toán về dãy

a.Tìm phần tử lớn nhất trong một dãy số hữu hạn • Có nhiều cách để giải bài toán này, có thể thực hiện theo các bước sau đây: 1. trước hết đặt cho giá trị lớn nhất tạm thời bằng số đầu tiên trong dãy 2. so sánh số kế tiếp trong dãy với giá trị lớn nhất tạm thời và nếu nó lớn honư giá trị lớn nhất tạm thời thì đặt giá trị lớn nhất tạm thời bằng giá trị này 3. lặp lại bước 2 nếu còn số phần tử trong dãy chưa được xét tới 4. dừng nếu không còn số nào trong dãy chưa được xét. giá trị lớn nhất tạm thời lúc này chính là giá trị lớn nhất trong dãy số 45/169

A1

a. Tìm phần tử lớn nhất trong dãy số hữu hạn(t)

•Thuật toán: –Nhập: dãy số a1, a2, …, an –Xuất: max là giá trị lớn nhất trong dãy số a1, a2, …, an –Thuật toán: 1. max:=a1 2. for i:=2 to n do if max
46/169

A1

b. Thuật toán sắp xếp

•Cho một dãy số bất kỳ = rel="nofollow"> sắp xếp các phần tử của dãy số theo một thứ tự nhất định: giảm dần hoặc tăng dần •Để không mất tính tổng quát ta xét bài toán như sau: cho dãy số gồm a1, a2, …, an => thực hiện sắp xếp để được dãy số tăng dần a1≤ a2 ≤ … ≤ an 47/169

A1

•Có nhiều phương pháp để thực hiện sắp xếp. Chọn phương pháp “sắp xếp chọn” như sau: – tiến hành tìm phần tử nhỏ nhất trong dãy a1, a2, …, an rồi hoán vị với phần tử đầu tiên. Sau bước này a1 trở thành phần tử nhỏ nhất trong dãy – kế tiếp xét các phần tử a2, …, an và thực hiện giống như trên: tìm phần tử nhỏ nhất trong dãy a2, a3, …, an và hoán vị với phần tử a2. – cứ tiếp tục qúa trình trên thì sau n-1 ta có một dãy các giá trị tăng dần 48/169

A1

• Thuật toán sắp xếp chọn:

• Nhập: dãy số a1, a2, …, an (tùy ý) • xuất: dãy số a1, a2, …, an đã được sắp xếp tăng dần a1≤ a2 ≤ … ≤ an • Thuật toán: for i:= 1 to n-1 do begin {tìm vị trí j chứa phần tử nhỏ nhất trong dãy} j:=i for k:=i+1 to n do if ak < aj then j:=k;

{thực hiện hoán đổi hai phần tử} temp:=ai ai:=aj aj:=temp end

49/169

A1

PHẦN III: LẬP TRÌNH BẰNG NGÔN NGỮ PASCAL

50/169

A1

CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN TRONG PASCAL

I.Giới thiệu về ngôn ngữ Pascal: •Là ngôn ngữ lập trình cao cấp do GS Niklaus Wirth công bố năm 1971 •Là ngôn ngữ có định kiểu mạnh mẽ •Là ngôn ngữ có cấu trúc  một chương trình lớn, phức tạp được chia thành nhiều bài toán nhỏ, đơn giản hơn. •Tính cấu trúc còn được thể hiện ở cách thức tổ chức các câu lệnh  từ các câu lệnh đã có => nhóm các câu lệnh lại với nhau và đặt trong cặp từ khóa Begin và End 51/169

A1

II.Bộ chữ viết. Từ khóa. Tên

•Một ngôn ngữ bất kỳ đều có một bộ các chữ viết(ký tự) và các ký tự kết hợp lại thành “từ vựng” •Bộ chữ cái của Pascal –Chữ cái Latinh: 26 chữ cái hoa(A,B,…,Z) và 26 chữ cái thường(a,b,…,z) –Ký tự gạch nối: _ –Các chữ số: 0,1,2,3,4,5,6,7,8,9 –Các ký hiệu toán học: + - * / = < > ()… –Các ký tự đặc biệt: . , ; : [ ] ? % @ \ | ! & # $ 52/169

A1

• Từ khóa: là một số từ của riêng Pascal . Các từ khóa phải dùng đúng với cú pháp và không được dùng cho việc đặt tên mới. • Các từ khóa – Từ khóa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION – Từ khóa khai báo: TYPE, CONST, LABEL, VAR, ARRAY, STRING, RECORD, FILE OF – Từ khóa cấu trúc: IF…THEN..ELSE…, CASE… OF…, FOR…TO...DO…, WHILE…DO…, REPEAT…UNTIL…, – Từ khóa toán tử: AND, OR, NOT, IN, DIV, MOD – Từ khóa null: NULL

53/169

A1

•Tên(định danh): là dãy ký tự liền nhau để chỉ tên của hằng(số, ký tự, ..), biến, kiểu, chương trình con, …Được tạo từ các chữ cái và chữ số, bắt buộc phải chữ cái đầu –Tên đã được định nghĩa sẵn: tên chuẩn –Người dùng có thể sử dụng và định nghĩa lại tên chuẩn –Một số tên chuẩn: boolean, char, integer, real, byte, text, false, true, chr, ord, round, trunc, sqr, sqrt, pred, succ, new, read, readln, write, writeln, reset, rewrite. 54/169

A1

III.Lời chú thích •Dùng để giải thích một đoạn mã trong chương trình •Được đặt giữa cặp dấu { } hay (* *) •Chương trình khi chạy bỏ qua các câu này III.Cấu trúc một chương trình Pascal •Gồm ba phần: –Phần tiêu đề chương trình –Phần khai báo dữ liệu: biến, hằng, chương trình con,… –Phần thân chương trình: chứa các lệnh thực hiện

55/169

A1

1.Phần tiêu đề chương trình: có thể có – Bắt đầu bằng từ khóa PROGRAM – Tiếp đến là tên chương trình – Kết thúc bằng dấu chấm phẩy (;)

2.Phần khai báo: có thể có – Dùng để mô tả đối tượng bài toán, dữ liệu bài toán – Gồm các thành phần: LABEL, CONST, TYPE, VAR, PROCEDURE, FUNCTION

2.Phần thân chương trình: bắt buộc – Nằm gọn giữa hai từ khóa BEGIN và END. – Chứa các lệnh xử lý các đối tượng dữ liệu

56/169

A1

• Cấu trúc một chương trình Pascal

{Phần tiêu đề } PROGRAM ten_chuong_trinh; { dòng tiêu đề} {Phần khai báo } USE CRT, PRINTER; {gọi sử dụng các đơn vị chương trình} LABEL… {khai báo nhãn} CONST… {khai báo hằng} TYPE… {khai báo kiểu dữ liệu mới} VAR… {khai báo biến cho toàn chương trình} PROCEDURE…

{khai báo thủ tục}

FUNCTION… {khai báo hàm} {Phần thân chương trình } BEGIN {bắt đầu thân chươn trình chính} …

END.

57/169

A1

• Ví dụ một chương trình đơn giản Program cong2so; {Phần tiêu đề} uses crt; {Khai báo hàm thư viện} var a,b,tong: real; {Khai báo biến} Begin {Bắt đầu chương trình} Clrscr; {Lệnh xoá màn hình} Write('Nhap so thu nhat'); {Lệnh in lên màn hình thông báo} readln(a); {Lệnh nhập dữ liệu cho biến a} Write('Nhap so thu hai'); readln(b); TONG:=a+b; {Lệnh tính tổng của hai biến a và b} Writeln('Tong hai so la', tong:8:2); {Đưa kết quả lên ra màn hình} readln; {Lệnh dừng màn hình để xem kết quả} End. {Kết thúc chương trình}

58/169

A1

V. Môi trường làm việc của ngôn ngữ Pascal

1.Khởi động chương trình a.Click đúp vào biểu tượng Borland Pascal trên màn hình b.Khởi động máy vào môi trường MS Dos sau đó đánh đường dẫn vào thư mục c:\BP\BIN\BP Hệ thống Menu Giao diện chương trình xuất hiện:

Các phím tắt

59/169

A1

2. Các thao tác soạn thảo chương trình - Bấm phím Alt + ký tự đầu của menu để mở menu - Mở một file mới chọn New trong menu File - Mở file đã có: ấn F3 hoặc chọn file/Open => xuất hiện hộp thoại, tiến hành chọn thư mục chứa chương trình cần mở - đóng file: ấn Alt + F3

60/169

A1

- Ghi file vào đĩa cứng: bấm phím F2 và đặt tên bài theo quy tắc:

Tên gồm các chữ cái latinh và số dài không qua 8 ký tự, không chứa dấu cách Phần mở rộng mặc định là PAS(chương trình tự đặt)

61/169

A1

3. Chạy chương trình

- Bấm F9 để kiểm tra lỗi cú pháp - Bấm Ctrl + F9 để chạy chương trình - Bấm Alt + F5 để xem lại kết quả - Để chạy được Turbo Pascal, cần hai tập tin sau là đủ :  TURBO.EXE : tập tin chính của TP  TURBO.TPL : tập tin chứa các thư viện của TP - Nếu muốn vẽ đồ họa thì phải có thêm các tập tin:  GRAPH.TPU, tập tin chứa thư viện đồ họa  *.BGI : các tập tin màn hình đồ họa  *.CHR : các tập tin tạo kiểu chữ 62/169

A1

VI.Các kiểu dữ liệu cơ bản

1.Khái niệm chung: •Dữ liệu: là tất cả những gì máy tính xử lý •Kiểu dữ liệu được định nghĩa với hai điểm: –Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận được –Trên đó xác định một số phép toán

63/169

A1



Các kiểu dữ liệu cơ bản Kiểu vô hướng

Kiểu cơ sở

Boolean Integer Real Char

Kiểu do người dùng định nghĩa

Khoảng con Liệt kê

Kiểu cấu trúc Kiểu xâu ký tự

Array Set Record

Kiểu con trỏ

File

64/169

A1

2.Kiểu Logic – Boolean • Để mô tả đại lượng chỉ nhận hai giá trị logic –True: đúng –False: sai –quan hệ giá trị: FALSE < TRUE • mỗi giá trị boolean chiếm một byte bộ nhớ • Các phép toán đối với kiểu Boolean –Phép AND –Phép OR –Phép NOT –Phép XOR –Các biểu thức quan hệ: <>, =, >=, <=, <, >

65/169

A1

3. Kiểu số nguyên

•Mô tả giá trị các số nguyên •Các kiểu số nguyên: –integer –shortint –byte –word –longint

 -32768…32767  -128…127  0…255  0..65535  -2147483648…2147483647 66/169

A1

•Các phép toán đối với kiểu nguyên: –Các phép toán số học: +, -,*,/, DIV,MOD –Các phép toán quan hệ: >, <, >=, <=, <>, =  kết quả của phép toán là giá trị logic TRUE hoặc FALSE 67/169

A1

– Các phép toán logic trên số nguyên: NOT, AND, OR, XOR xử lý trên các bít nhị phân (0, 1) và được xác định như sau: NOT 1=0 1 AND 1 = 1 1 OR 1 = 1 1 XOR 1 = 0

NOT 0 = 1 1 AND 0 =0 1 OR 0 = 1 1 XOR 0 = 1 68/169

A1

–các phép toán dịch chuyển số học SHR và SHL: n SHR k : dịch các bít của số nguyên n sang phải đi k bít  N div 2k n SHL k : dịch các bít của số nguyên n sang trái đi k bít  N * 2k

69/169

A1

4. Kiểu số thực

•để biểu diễn các giá trị có kiểu thực •có các kiểu số thực thông dụng: –real 2.9*10-39…1.7*1038 –single 1.5*10-45…3.4*1038 –double 5.0*10-324…1.7*10308

70/169

A1

•Các phép toán đối với kiểu thực: –Các phép toán số học: +, -, *, / –Các phép toán quan hệ: >, <, >=, <=, <>, = •Các dạng biểu diễn số thực: –Dạng bình thường: 3.14 623.12345 –Dạng mũ: “phần định trị” + “E” + “phần mũ” 6.2312345E+02

71/169

A1

5. Các hàm số học chuẩn

• ABS(x): trả lại giá trị tuyệt đối của x • EXP(x): hàm tính ex • SQR(x): hàm tính x2 • SQRT(x): hàm tính căn bậc hai của x • SUCC(n): hàm trả lại giá trị tương ứng với n+1 72/169

A1

5. Các hàm số học chuẩn

• PRED(n): hàm trả lại giá trị tương ứng với n-1 • ODD(n): hàm kiểm tra số n có phải là số lẻ hay không. Hàm trả lại giá trị True nếu n là số lẻ và ngược lại là giá trị False nếu n là số chẵn • ROUND(x): hàm trả lại giá trị được làm tròn đến số nguyên gần nhất 73/169

A1

6. Kiểu ký tự - char

•để mô tả 1 ký tự: chữ số, chữ cái, ký hiệu,… •Hằng ký tự được đặt trong dấu ‘ ’ •các ký tự được mô tả trong bảng mã ASCII, đánh số theo thứ tự từ 0 đến 255 –chữ số (0..9): mã ASCII là 48..57 –chữ cái hoa(A..Z): mã ASCII là 65..90 –chữ cái thường(a..z): mã ASCII là 97..122

74/169

A1

•Các hàm chuẩn liên quan đến ký tự –ORD(ch): trả lại vị trí của ký tự ch trong bảng mã –CHR(n): trả lại ký tự ở vị trí n trong bảng mã –PRED(ch): trả lại ký tự nằm trước ký tự ch trong bảng mã –SUCC(ch): trả lại ký tự nằm sau ký tự ch trong bảng mã –UPCASE(ch): đổi ký tự ch thành chữ hoa 75/169

A1

•Ví dụ: viết chương trình đổi chữ hoa ra chữ thường và ngược lại PROGRAM VIDU; Var ch, ch1: char; begin write(‘nhap ky tu:’); readln(ch); if (ch>=‘A’) and (ch<=‘Z’) then ch1:=Chr(ord(ch)+32) else ch1=Upcase(ch); writeln(ch, ‘ duoc doi thanh ‘, ch1); readln; end. 76/169

A1

VII.Thủ tục vào/ ra: 1.Thủ tục viết ra màn hình • Viết một nội dung ra màn hình • Cú pháp: write(item1, item2,…,itemN); writeln(item1, item2,…, itemN); writeln; Item1, item2,…, itemN là các mục được viết ra màn hình.

77/169

A1

2. Viết ra kiểu số nguyên:

Không quy cách: Var i,n:integer; Begin i:=5; n:=10; write(i,n); End.

Có quy cách: Var i:integer; Begin i:=5; write(i:8,n:6); End. 78/169

A1

3. Viết ra kiểu số thực Không quy cách: Var x:real; Begin x:=123.456; write(x); End. 1.2345600000E+02

Có quy cách: Var x:real; Begin x:=123.456; write(x:8:3); End. 123.456 79/169

A1

VIII.Thủ tục nhập dữ liệu 1.Thủ tục Read và Readln: • Cho phép nhập giá trị từ bàn phím vào một biến • Cú pháp: read(biến 1, biến 2,…., biến N); readln(biến 1, biến 2,…., biến N); readln; • Ví dụ: 80/169

A1

2.Kết hợp Write và Read để trao đổi người - máy: Var n,x :integer; begin write(‘Nhap gia tri cua n:’); readln(n); x:= n+1; write(‘Gia tri cua x la :’, x); end. 81/169

A1

IX.Khai báo hằng, biến và kiểu 1.Khai báo hằng: CONST tên_hằng = giá_trị_của_hằng; •Ví dụ: const Pi=3.14, N=5;

82/169

A1

2.Khai báo biến: VAR tên_biến : kiểu_dữ_liệu_của_biến; •Ví dụ: Var x,y:real; i,n: integer;

83/169

A1

3.Định nghĩa kiểu dữ liệu mới: TYPE tên_kiểu_DL_mới= mô_tả_kiểu_DL_mới; • Ví dụ: type color=(xanh,do,trang); var c:color;

84/169

A1

4.Câu lệnh • Xác định công việc chương trình thực hiện để xử lý các dữ liệu. • Các câu lệnh được phân cách nhau bởi dấu (;)

85/169

A1

• Phân loại câu lệnh: – Câu lệnh đơn giản – Câu lệnh có cấu trúc

• Phép gán: dùng gán giá trị của một biểu thức cho một biến • tên_biến := biểu_thức;

86/169

A1

CHƯƠNG II: CÂU LỆNH RẼ NHÁNH VÀ LẶP

I.Câu lệnh rẽ nhánh: 2. Câu lệnh IF: • Cho phép rẽ nhánh để thực hiện 1 trong hai khả năng dựa vào giá trị đúng – sai của “biểu thức điều kiện” • Cú pháp: Dạng (1): IF THEN ; Dạng (2): IF THEN ELSE ;

87/169

A1

• Thực hiện: –tính giá trị của biểu thức –nếu biểu thức đúng (TRUE) thì thực hiện , còn ngược lại thì bỏ qua chuyển sang câu lệnh sau IF nếu ở dạng (1) hoặc thực hiện nếu ở dạng (2)

88/169

A1

• Sơ đồ thực hiện:

bt boolean

Sai

Đúng

bt boolean

Sai

Đúng câu lệnh 1

câu lệnh 1

Câu lệnh kế tiếp

Câu lệnh kế tiếp

Dạng 1

Dạng 2

câu lệnh 2

89/169

A1

• Ví dụ 1: cho hai số a,b. In ra giá trị lớn nhất và nhỏ nhất Program lon_nho; Var a,b,max,min:integer; Begin Write(‘nhap hai so a va b:’); readln(a,b); If a>b then begin max:=a; min:=b end else begin max:=b; min:=a; end; Writeln(‘Gia tri lon nhat:’,max:5,‘Nho nhat:’,min:5); Readln; End. 90/169

A1

2.Câu lệnh CASE • Cho phép rẽ nhiều nhánh, thử và chọn một trong nhiều khả năng để thực hiện

91/169

A1

Cú pháp:

Dạng 1: CASE OF Hằng 1: ; Hằng 2: ; …. Hằng n: ; END;

Dạng 2: CASE OF Hằng 1: ; Hằng 2: ; …. Hằng n: ELSE ; END;

: biểu thức trả lại giá trị kiểu vô hướng đếm được , ,…: là các giá trị có thể nhận được 92/169

A1

•Thực hiện: –Tính toán giá trị của –Tùy theo giá trị của biểu thức có thể là , ,… thì sẽ thực hiện , ,… tương ứng 93/169

A1

• Ví dụ: nhập vào một tháng, sau đó in ra số ngày tương ứng của tháng đó Program tinh_ngay; Var ngay, thang: integer; Begin write(‘nhap thang:’); readln(thang); case thang of 4,6,9,11: ngay:=30; 2: ngay:=28; 1,3,5,7,8,10,12: ngay:=31; end; write(‘So ngay cua thang ‘,thang,’ la:’,ngay); readln; End.

94/169

A1

Ví dụ: nhập vào hai giá trị x và y. Nhập vào phép toán => In kết quả tương ứng với phép toán

Program tinh; Var x, y, kq: real; pheptoan:char ; kt: boolean; Begin Write(‘Nhap x = ’ ); readln(x); Write(‘Nhap y = ’ ); readln(y); Write(‘Chọn phép toán’ ); readln(pheptoan); kt : = true; Case pheptoan of ‘+’ :

kq : = x + y;

‘-’ :

kq : = x - y;

‘* ’:

kq : = x * y;

‘/’ : if (y<>0) then kq : = x / y else kt : = false; End; If kt then writeln(‘Ket qua = ’,kq:8:2) else writeln(‘Khong chia duoc’); Readln; End.

95/169

A1

II. Vòng lặp xác định và không xác định 1. Vòng lặp xác định: • Là vòng lặp được thực hiện với số bước lặp đã được xác định trước • Cú pháp: FOR :=gtđầu TO gtcuối DO ; FOR :=gtcuối DOWNTO gtđầu DO ; 96/169

A1

• Thực hiện lần lượt nhận từng giá trị tại từng vòng lặp từ đến . Tại mỗi bước lặp đều thực hiện trong thân vòng FOR

97/169

A1

• Ví dụ: Tính tổng của n số đầu tiên Var i,n,s :integer; Begin write(‘nhap n:’); readln(n); s:=0; for i:=1 to n do s:=s+i; writeln(‘Tong:’,s:6:2); End. 98/169

A1

2.Vòng lặp không xác định: Cú pháp1: REPEAT UNTIL ;

•Ý nghĩa : thực hiện cho đến khi nhận giá trị TRUE

99/169

A1

hoặc:

WHILE DO ;

–Ý nghĩa: chừng nào có giá trị TRUE thì thực hiện .

100/169

A1

• Ví dụ 1: tìm UCLN của hai số program USCLN; uses crt; var a, b, r :integer; Begin clrscr; writeln('Nhap hai so can tim USCLN'); write('a = '); readln(a); write('b = '); readln(b); while b<>0 do begin r:= a mod b; a:=b; b:=r; end; writeln('Uoc so chung lon nhat cua a va b la: ', a); readln; end.

101/169

A1

ví dụ 2: Hiện tại tuổi cha nhiều gấp hơn 2 lần tuổi con. Hỏi sau bao nhiêu năm nữa thì tuổi cha đúng bằng hai lần tuổi con.

102/169

A1

Program Timtuoicha_con; uses crt; var cha, con, nam:integer; Begin clrscr; nam:= 0; repeat write('Nhap tuoi cha = '); readln(cha); write('Nhap tuoi con = '); readln(con); until (cha>2*con); repeat begin cha:=cha +1; con:=con+1; nam:=nam +1; end; until cha=2*con; writeln('Tuoi cha gap 2 lan tuoi con sau ',nam, ' nam nua.') ;

103/169

A1

CHƯƠNG V: KIỂU DỮ LIỆU MẢNG

I.Khái niệm và định nghĩa: •Mảng là một tập hợp gồm nhiều phần tử có cùng kiểu dữ liệu. •Các phần tử của mảng được lưu trữ liên tiếp nhau, vị trí của phần tử gọi là chỉ số. •Các yếu tố để xác định mảng: – Tên mảng – Kiểu dữ liệu của các phần tử – Kiểu dữ liệu và phạm vi của chỉ số 104/169

A1

Định nghĩa mảng: •

Type =array[n1..n2] of Var a:;

Hoặc: Var A:array[n1..n2] of

Trong đó: n1, n2: là hai hằng xác định phạm vi chỉ số 105/169

A1

• Ví dụ: TYPE Mang=array[1..10] of integer; VAR A,B,C: Mang; X,Y: array[1..25] of char;

106/169

A1

• Để truy cập đến từng phần tử của mảng thì thực hiện thông qua biến mảng và giá trị chỉ dẫn, được đặt trong ngoặc vuông:

Ví dụ:

A[3],

X[10]

107/169

A1

II.Ví dụ: Viết chương trình tính tổng hai mảng 10 pt.

Type mang=array[1..10] of integer; Var A,B,C:mang; i,x:integer; Begin Write(‘nhap cac phan tu mang A:’); For i:=1 to 10 do read(A[i]); Write(‘nhap cac phan tu mang B:’); For i:=1 to 10 do read(B[i]); For i:=1 to 10 do C[i]:=A[i]+B[i]; write(‘Mang ket qua:’); For i:=1 to 10 do write(C[i]:5); End.

108/169

A1

II. Mảng hai chiều • Ngoài cách sử dụng mảng một chiều còn sử dụng mảng nhiều chiều  mảng của mảng

109/169

A1

• Khai báo: Type tên-mảng=array[n1..n2,m1..m2] of kiểu-dữ liệu Var tên-biến:tên-mảng; • n1, n2,m1,m2: là các hằng số để xác định số hàng và số cột của mảng 110/169

A1

• Để truy cập đến phần tử của mảng hai chiều, ta viết: –Tên mảng[i] [j] –Tên mảng[i,j]

111/169

A1

Ví dụ: A=

[

1 2 3 2 3 5

A[1,1] = 1

A[2,1] = 2

A[1,2] = 2

A[2,2] = 3

A[1,3] = 3

A[2,3] = 5

]

112/169

A1

• Để nhập DL cho mảng hai chiều ta dùng hai vòng lặp for để duyệt theo chỉ số hàng và chỉ số cột For i:=1 to n do For j:=1 to m do Begin write(‘A[ ’ , i, ',' , j, ‘]= ‘); readln(A[i,j]); End; 113/169

A1

• Để in DL của mảng hai chiều ta viết: For i:=1 to n do Begin For j:=1 to m do

write(A[i,j]:6);

writeln; End;

114/169

A1

CHƯƠNG VI: DỮ LIỆU KIỂU XÂU

I.Khái niệm •xâu ký tự là kiểu dữ liệu gồm một chuỗi các ký tự trong bảng mã ASCII

115/169

A1

II. Khai báo biến kiểu xâu 1. Khái báo tường minh: VAR VAR Tên_biến :: String String [n]; [n]; Tên_biến Trong đó: VAR, string: là các từ khoá Tên_biến: dài tối đa 10 ký tự viết liền nhau, bắt đầu bằng chữ, sau đó có thể là số, dấu gạch dưới n: kích thước biến

116/169

A1

•Ví dụ Var Hodem: string[17]; Ten: string[7]; Dia_chi: String;

117/169

A1

2. Khái báo kiểu không tường minh: TYPE TYPE Tên_kiểu == String[n]; String[n]; Tên_kiểu VAR VAR Tên_biến: Tên_kiểu; Tên_kiểu; Tên_biến:

Ví dụ: Type xau = string[24]; Var Hodem, ten: xau; 118/169

A1

3. Truy cập vào phần tử của xâu ký tự:

biến [i]; [i]; biến

119/169

A1

II.Các thao tác với xâu ký tự •Phép gán “:=“ : cho phép gán một xâu ký tự cho một biến kiểu xâu Ví dụ: Ho:=“Nguyễn” Ten:=“Thắm” 120/169

A1

•Phép cộng xâu: cho phép ghép nhiều xâu thành một xâu duy nhất  “+” Ví dụ: => Ho+Ten=“NguyễnThắm”

121/169

A1

•So sánh xâu ký tự(=,<,>,<>, <=, >=): xâu ký tự có thể dùng trong các biểu thức quan hệ để thực hiện so sánh. Nguyên tắc so sánh được thực hiện: –Các ký tự của hai xâu được so sánh từng cặp một từ trái qua phải theo giá trị trong bảng mã ASCII –Hai xâu ký tự có độ dài khác nhau xong số ký tự giống nhau đến độ dài xâu ký tự ngắn nhất thì xâu có độ dài ngắn hơn được coi là bé hơn –Hai xâu bằng nhau nếu như bằng nhau cả về nội dung và độ dài 122/169

A1

•Ví dụ so sánh hai xâu:

‘AB’ = ‘AB’ ‘AB’ < ‘BB’

123/169

A1

III. 1.

Các thủ tục và hàm kiểu xâu Thủ tục DELETE

cú pháp: Trong đó

Delete(St, Pos, Num); St: là biến xâu ký tự Pos: Vị trí bắt đầu xoá số nguyên Num: số ký tự cần xoá

124/169

A1

Công dụng:

Thủ tục này dùng để xoá khỏi xâu St một xâu con chứa Num ký tự kể từ vị trí Pos trở đi. -Nếu Pos lớn hơn chiều dài xâu thì không có ký tự nào bị xoá bỏ -Nếu Pos + Num vượt quá chiều dài của xâu St thì chỉ có các ký tự nằm trong phạm vi của xâu kể từ vị trí Pos bị xoá bỏ. -Nếu Pos nằm ngoài khoảng 1..255, hệ thống sẽ báo lỗi 125/169

A1

2. Thủ tục INSERT

cú pháp:

Insert(st2, st1, Pos);

Trong đó: st2: biểu thức xâu ký tự chèn st1: biến xâu pos: Vị trí cần chèn (số nguyên)

126/169

A1

Công dụng;

Dùng để chèn xâu st2 vào vị trí pos của xâu st1. -Nếu Pos lớn hơn chiều dài xâu St1 thì St2 được

phép gán vào cuối xâu St1 -Nếu sau khi chèn xâu mà chiều dài vượt quá chiều dài của xâu St1 thì những ký tự thừa bị xoá bỏ và St1 chỉ chứa các ký tự bên trái nhất. -Nếu Pos nằm ngoài khoảng 1..255, hệ thống sẽ báo lỗi 127/169

A1

3. Thủ tục STR

cú pháp:

Str(Value, st);

Trong đó: Value: giá trị số nguyên hoặc thực St: biến xâu Công dụng: Biến đổi giá trị số của Value thành xâu ký tự để lưu kết quả vào biến xâu St. 128/169

A1

4. Hàm Length:

cú pháp:

length(st);

Trong đó St là biểu thức xâu ký tự Công dụng Cho kết quả là chiều dài thực của biểu thức xâu St. Ví dụ St:=‘123456789’ => length(St) = 9 129/169

A1

VD1:Nhập vào họ tên, địa chỉ của một người và thông báo ra màn hình họ tên và ký tự đầu của địa chỉ vừa nhập. Program vd; Var

ho_ten: string[20]; dia_chi: string;

130/169

A1

Begin Writeln(‘Nhap ho ten’); Readln(ho_ten); Writeln(‘Nhap dia chi’); Readln(dia_chi); writeln(‘Thong tin vua nhap la:’); Writeln(‘Ho ten la :’,ho_ten); Writeln(‘Ky tu dau cua dia chi la :’,dia_chi[1]); Readln; End.

131/169

A1

CHƯƠNG VII: CHƯƠNG TRÌNH CON

I.Giới thiệu Viết chương trình tìm ước chung lớn nhất của bốn số: a, b, c, d

132/169

A1

II.Khái niệm chương trình con:  Chương trình con là một đoạn chương trình có chức năng giải quyết một số vấn đề mà chương trình chính phải thực hiện nhiều lần ở những chỗ khác nhau trong một chương trình lớn  Việc tổ chức chương trình con có tác dụng làm cho chương trình chính bớt dài dòng, khó hiểu

133/169

A1

III.Phân loại chương trình con:

•Trong Pascal cung cấp hai loại chương trình con: thủ tục và hàm –Hàm: là đoạn CTC khi thực hiện trả lại một giá trị có kiểu xác định (integer, real,…) thông qua tên của hàm => do đó “tên hàm” có thể được sử dụng trong biểu thức để tính toán. –Hàm được khai báo với từ FUNCTION

Ví dụ gọi hàm: max1= lonnhat(a,b);

134/169

A1

–Thủ tục: là đoạn CTC chỉ thực hiện các thao tác mà không trả lại giá trị sau khi thực hiện  không thể dùng trong biểu thức. – Thủ tục được khai báo với từ PROCEDURE

Ví dụ gọi thủ tục:

nhap(a);

135/169

A1

•Khai báo: Theo Pascal chuẩn thì phần khai báo CTC được khai báo trong phần sau phần Var và trước từ khoá Begin của chương trình

136/169

•Cấu trúc của chương trình có CTC như sau:

A1

PROGRAM ten_CT; USE CRT, PRINTER; … VAR… {khai báo biến cho toàn chương trình}

PROCEDURE tên-thủ-tục(khai báo tham số);

BEGIN … END; FUNCTION tên-hàm(khai báo các tham số): kiểu dữ liệu BEGIN … END; BEGIN {bắt đầu thân chươn trình chính} … END. 137/169

A1

IV.Định nghĩa hàm

 Hàm được khai báo theo mẫu sau: Function Tênhàm(tênthamsố: kiểuthamsố) : kiểugiátrị ; { Các khai báo dùng riêng trong hàm } Const ... Type ... Var ... Begin Các lệnh của hàm  thân hàm tênhàm := biểu thức; End;

 Một hàm có đầy đủ các thành phần như một chương trình. Thân của hàm là các lệnh được đặt giữa hai từ khóa Begin và End, kết thúc bằng dấu chấm phẩy ";" 138/169

A1

IV.Định nghĩa thủ tục  Thủ tục được khai báo theo mẫu sau:

Procedure Tênthủtục( tênthamsố : kiểuthamsố ) ; { Các khai báo Const, Type, Var dùng trong thủ tục } Begin {Các lệnh của thủ tục  thân thủ tục } End;  Một thủ tục thực chất là một nhóm các lệnh được sắp xếp theo một trình tự nhất định có tác dụng giải quyết một nhiệm vụ cụ thể 139/169

A1

IV.Sử dụng hàm và thủ tục:  Để sử dụng các hàm và thủ tục trong chương trình chính => Thực hiện lời gọi hàm hay thủ tục: Lời gọi hàm: là “lệnh gán” giá trị của hàm cho một biến đã khai báo Lời gọi thủ tục: là một lệnh đơn giản . Do thủ tục không trả về gía trị thông qua tên gọi của thủ tục nên “tên thủ tục không thể đứng trong các biểu thức” 140/169

A1

VI.Khai báo tham số cho chương trình con • Chương trình con có hai loại tham số: –Tham số biến  tham biến: được đặt sau từ khóa Var trong phần khai báo tham số của CTC. CTC sẽ thực hiện thay đổi giá trị của các tham số này. –Tham số giá trị  tham trị: các tham số của CTC khi khai báo không có từ Var đi kèm. CTC không có quyền thay đổi giá trị của các tham số này mà chỉ dùng giá trị của các tham số đó.

• Danh sách các tham số khác kiểu được đặt cách nhau bởi dấu (;), cùng kiểu cách nhau bởi dấu(,) 141/169

A1

VII.Truyền tham số cho CTC • Truyền tham số cho CTC là cơ chế thay thế tương ứng tham số của CTC bằng một giá trị cụ thể khi có lời gọi tới CTC. • Việc truyền tham số được thực hiện “lặp đi lặp lại” tại những vị trí cần thiết

142/169

A1

• Tham số dùng cho CTC phải có : –Kiểu vô hướng đã có sẵn: integer,real,char… –Kiểu được định nghĩa sẵn trong TYPE - Khi truyền tham số phải tương ứng và nhất quán với danh sách tham số hình thức đã khai báo của CTC. Lưu ý: Để lấy kết quả do CTC đem lại thì dùng tham biến. Để không thay đổi giá trị do CTC thì dùng tham trị 143/169

A1

Program tham_so; Var x, y : integer ;{biến toàn cục X } Procedure CTC( a : integer; var b :integer ) ; Begin a : =10 +a ; b: = 5 +b; Writeln(a:6, b:6); end; Begin x : =20 ; y:=10 ; CTC(x, y); Writeln(x: 6, y:6); readln; End.

144/169

A1

VIII.Function và cách lựa chọn • Đoạn CTC là function khi thỏa mãn:

–muốn nhận lại một kết quả, –kết quả đó có kiểu vô hướng, –tên CTC có dùng để viết trong các biểu thức  Trong hàm tránh dùng các lệnh nhập hay in dữ liệu

145/169

A1

IX.Ghi chú: •Biến toàn cục và biến địa phương: –Biến được khai báo trong chương trình chính là biến toàn cục  được dùng ở mọi nơi trong chương trình –Biến được khai báo trong CTC là biến địa phương  chỉ được sử dụng trong phạm vi CTC mà biến được định nghĩa

146/169

A1

VD: tầm tác dụng của biến

Program bien; Var X : integer ;{biến toàn cục X } Procedure CTC ; Var X : integer ; {biến địa phương} Begin X:=10 ; end; Begin X:=20 ; Writeln(X) ; CTC; Writeln(X); End. 147/169

A1

• Đệ quy: là khả năng mà một chương trình CTC có lời gọi đến chính CTC đang định nghĩa Tính đệ qui được dùng trong các bài toán có tính lặp VD: Tính S = n! Ta biết n! = 1 khi n = 0 n! =n.(n-1).(n-2)....1, hay n! = n (n-1)! 148/169

A1

Program giaithua; Var n : byte ;{biến toàn cục X } Giaithua:real; Function GT( k : byte) : real ; Begin if k=0 then GT :=1 else GT := k*GT(k-1); end; Begin Writeln(‘Nhap vao n = ’);readln(n); GIAITHUA:=GT(n); Writeln(N,’! = ’, GIAITHUA:5:3); readln; End. 149/169

A1

CHƯƠNG VIII: KIỂU RECORD - FILE

I.Khái niệm kiểu Record • Để tạo ra một kiểu cấu trúc dữ liệu với các phần tử có kiểu khác nhau nhưng liên kết lại được với nhau ta dùng kiểu bản ghi (Record) • Record: cho phép mô tả một đối tượng với các phần tử có kiểu khác nhau • Ví dụ: Sinh_viên

150/169

A1

II. Mô tả kiểu Record

• Cú pháp: Cách 1: TYPE Tenkieu=Record S1: T1; S2: T2; … End; Var tenbien: tenkieu;

•Chú thích: –tenkieu: tên kiểu của bản ghi được định nghĩa –S1, S2, …: tên danh sách các trường được định nghĩa –T1, T2,…: tương ứng là các kiểu dữ liệu của các trường S1, S2,… 151/169

A1

Cách 2: Var tenbien : Record S1: T1; S2: T2; …

end;

152/169

A1

VD : Var HS: Record Hodem: string[20]; Ten: string[7]; DV, DT, Dtin: integer; DTB: real; end; 153/169

A1

•Ví dụ 1: Định nghĩa kiểu dữ liệu địa chỉ bao gồm: số nhà, tên phố, tên tỉnh. •Ví dụ 2: Định nghĩa kiểu dữ liệu mô tả ngày tháng năm •Ví dụ 3: Định nghĩa kiểu dữ liệu mô tả nhân sự bao gồm: họ tên, ngày sinh, giới tính, địa chỉ, lương 154/169

A1

III. Sử dụng Record

•Để truy cập vào một trường của bản ghi thông qua tên biến, dấu chấm(.), tên trường bản ghi cần truy cập đến

155/169

A1

• Ví dụ:

DTin)/3;

Readln(HS.Hodem); Readln(HS.Ten); Readln(HS.DV, HS.DT, HS. DTin); Hs.DTB:=(HS.DV+ HS.DT+ HS.

156/169

A1

• Pascal cho phép truy nhập đến tất cả các trường của bản ghi bằng cách dùng lệnh: WITH biến bản ghi DO Câu lệnh; Trong câu lệnh sau từ khoá DO ta muốn truy nhập đến trường nào của biến bản ghi thì chỉ cần viết tên trường đó

157/169

A1

• Ví dụ: With HS do begin Readln(Hodem, Ten); Readln(DV, DT, Dtin); DTB:= (DV+ DT+ Dtin)/3; end; 158/169

A1

• Các phép toán đối với kiểu Record: –Gán  (:=) : cho phép copy nội dung của hai biến kiểu bản ghi với nhau –So sánh bằng (=): so sánh xem hai bản ghi kiểu Record có bằng nhau hay không

159/169

A1

• Các phép tóan không dùng với kiểu bản ghi: –Viết ra màn hình hay đọc từ bàn phím cả một biến kiểu bản ghi –So sánh các bản ghi: >, <, >=, <= –Các phép toán số học: +, -, *, / –Các phép toán logic: And, or, not, xor

160/169

A1

CHƯƠNG III: KIỂU DỮ LIỆU LIỆT KÊ VÀ ĐOẠN CON

I.Kiểu liệt kê: 2.Khai báo kiểu liệt kê: •liệt kê các giá trị của kiểu cần định nghĩa theo mẫu: Type tênkiểu=(giá trị1, giá trị2,…,giá trị n); •ví dụ: Type phai=(nam,nu); mausac=(xanh, do, tim, vang,nau); 161/169

A1

2. Các hàm kiểu liệt kê

• hàm ORD(tên): trả về số thứ tự của “tên” trong kiểu liệt kê, các giá trị liệt kê được đánh số bắt đầu từ 0 • hàm PRED(tên): trả về giá trị đứng trước “tên” trong kiểu liệt kê • hàm SUCC(tên): trả về giá trị đứng sau “tên” trong kiểu liệt kê • ví dụ: ord(nam)=? ord(do)=? pred(nu)=? succ(do)=? 162/169

A1

3. Nhập xuất kiểu liệt kê

• các giá trị kiểu liệt kê không thể nhập xuất trực tiếp bằng hàm write hay read được  phải thông qua các biến trung gian • ví dụ: mau: mausac; readln(st); if st=“xanh” then mau:=xanh; if mau=xanh then writeln(“xanh”); 163/169

A1

II. Kiểu đoạn con

• đoạn con là một tập hợp các giá trị liên nhau theo một thứ tự nhất định. • được khai báo bằng cách xác định phạm vi mà giá trị có thể nhận • cú pháp: TYPE tênkiểu=hằng1..hằng2; VAR tênbiến:tênkiểu; • Ví dụ: TYPE chuhoa=‘A’..’Z’; 164/169 VAR t:chuhoa;

A1

CHƯƠNG IV: KIỂU TẬP HỢP

1.Khai báo: • tập hợp gồm nhiều giá trị có chung kiểu hợp thành • chỉ tạo được tập hợp các phần tử kiểu cơ bản : byte, char, logic, liệt kê • số phần tử tối đa của tập hợp: 256 • Khai báo : TYPE Kkytu=SET OF char; Kchuhoa=SET OF ‘A’..’Z’; 165/169

A1

2. Các phép toán trên kiểu tập hợp

• phép gán  := : thực hiện gán một tập hợp cho một biến được định nghĩa kiểu tập hợp • Ví dụ: TapA:Kkytu; TapB:Kchuhoa; => TapA:=[‘a’,’b’,’0’,’3’]; TapB:=[‘A’,’B’,’D’]; • Phép hợp  + : hợp của tập A và B là tập hợp gồm tất cả các phần tử hoặc thuộc A hoặc thuộc B • Phép giao  * : giao của tập A và B là tập hợp gồm các phần tử vừa thuộc A vừa thuộc B • Phép hiệu  - : hiệu của tập A cho tập B là tập các phần tử thuộc A nhưng không thuộc B 166/169

Related Documents

Trac Dia Dai Cuong
June 2020 4
Luat Dai Cuong
October 2019 15
Chuong 1 - Dai Cuong
October 2019 10
C1. Dai Cuong Tttc
July 2020 0
C2. Dai Cuong Tttt
July 2020 2
Tin Hoc Dai Cuong
November 2019 36