1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình bồi dưỡng học sinh giỏi môn tin học THCS

65 2,2K 57

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 828,03 KB

Nội dung

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ MỤC LỤC Chương 1 CÁC THÀNH PHẦN CƠ BẢN CỦA NGƠN NGỮ LẬP TRÌNH PASCAL .... Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin H

Trang 1

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

MỤC LỤC

Chương 1 CÁC THÀNH PHẦN CƠ BẢN CỦA NGƠN NGỮ LẬP TRÌNH PASCAL 4

I CÁC TẬP TIN CẦN THIẾT TRONG PASCAL 4

II CÁC BƯỚC CƠ BẢN KHI LẬP TRÌNH 4

III CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH PASCAL 4

IV MỘT SỐ PHÍM TẮT CƠ BẢN KHI LẬP TRÌNH 5

V CÁC THÀNH PHẦN CƠ BẢN TRONG NGƠN NGỨ PASCAL 5

1 Từ khĩa 5

2 Tên (định danh) 5

3 Hằng 5

4 Biến 5

Chương 2 CÁC THÀNH PHẦN CƠ BẢN TRONG PHẦN THÂN CHƯƠNG TRÌNH 6

I BIỂU THỨC 6

II CÂU LỆNH 6

1 Câu lệnh gán 6

2 Lệnh xuất dữ liệu: 6

3 Nhập dữ liệu: 6

4 Lệnh ghép: 6

Chương 3 CÁC KIỂU DỮ LIỆU CƠ BẢN 7

I KIỂU LOGIC 7

1 Khai báo 7

2 Các phép tốn trên kiểu Logic 7

II KIỂU SỐ NGUYÊN 7

1 Khai báo 7

2 Sử dụng hàm Random(n) để lấy số ngẫu nhiên: 7

3 Các phép tốn trên kiểu số nguyên 7

III KIỂU SỐ THỰC 7

1 Khai báo 7

2 Các phép tốn trên kiểu số thực: +, -, *, / 8

3 Các hàm số học sử dụng cho kiểu số nguyên và số thực: 8

IV KIỂU KÍ TỰ 8

1 Khai báo 8

2 Các phép tốn 8

3 Các hàm trên kiểu ký tự: 8

V KIỂU XÂU KÍ TỰ 8

Chương 4 CÂU LỆNH LỰA CHỌN (RẼ NHÁNH) 9

I LỆNH IF 9

1 Cú pháp: 9

2 Ví dụ 9

II LỆNH CASE 9

1 Cú pháp: 9

2 Ví dụ: 10

Chương 5 CÂU LỆNH LẶP 11

I VỊNG LẶP VỚI SỐ LẦN BIẾT TRƯỚC (FOR) Error! Bookmark not defined 1 Dạng tiến: 11

2 Dạng lùi: 11

II VỊNG LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC 12

1 Câu lệnh REPEAT 12

2 Câu lệnh While: 12

Trang 2

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 6 DỮ LIỆU KIỂU MẢNG (ARRAY) 14

I KHÁI NIỆM 14

II KHAI BÁO MẢNG 14

1 Mảng Một chiều 14

a Khai báo mảng một chiều: 14

b Truy cập câc phần tử của mảng: 14

2 Mảng Hai Chiều 14

a Khai báo 14

b Truy cập câc phần tử của mảng: 14

c Ví dụ: 15

Chương 7 XÂU KÝ TỰ (STRING) 16

I KHAI BÁO KIỂU STRING 16

II TRUY XUẤT DỮ LIỆU KIỂU STRING 16

III CÁC PHÉP TỐN TRÊN XÂU KÝ TỰ 16

1 Phép gán: 16

2 Phép nối String: 16

3 Các phép tốn so sánh: 16

IV CÁC THỦ TỤC VÀ HÀM VẾ XÂU KÝ TỰ 16

1 Các thủ tục: 16

a Delete(St , Pos, Num): 16

b Insert(St2, St1, Pos): 17

c Str(Value, St): 17

d Val(St, Var, Code): 17

2 Các hàm: 17

a Length(St): 17

b Copy(St, Pos, Num): 17

c Concat(St1, St2, , Stn): 17

d Pos(St1, St2): 17

Chương 8 18

KIỂU TẬP HỢP 18

I ĐỊNH NGHĨA 18

II CÁC PHÉP TỐN 18

1 Phép tốn quan hệ: 18

2 Phép tốn IN: 18

3 Phép tốn hợp, giao, hiệu: 18

III CÁC VÍ DỤ 18

Chương 9 DỮ LIỆU KIỂU FILE TEXT (TỆP) 19

I KHAI BÁO 19

II CÁC THAO TÁC TRÊN TỆP 19

1 Ghi vào một tệp văn bản: 19

2 Đọc dữ liệu từ một tệp đã cĩ 20

III CÁC HÀM VÀ THỦ TỤC XỬ LÍ TỆP 21

1 Hàm EOF(Var F: Text): Boolean 21

2 Hàm EOLN(Var F: Text): Boolean 21

3 Thủ tục thêm dịng: 21

Chương 10 CHƯƠNG TRÌNH CON 22

I KHÁI NIỆM 22

II PROCEDURE và FUNCTION (Thủ tục và Hàm) 22

III CẤU TRÚC CỦA CHƯƠNG TRÌNH CON 22

1 Function (hàm) 22

2 Procedure (Thủ tục) 22

V FUNCTION VÀ CÁCH LỰA CHỌN 23

Trang 3

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

VI BIẾN TỒN CỤC VÀ BIẾN ĐỊA PHƯƠNG 23

1 Biến tồn cục 23

2 Biến cục bộ 23

3 Chú ý 24

VII TÍNH ĐỆ QUY CỦA CHƯƠNG TRÌNH CON 24

BÀI TẬP 25

I CÂU LỆNH ĐIỀU KIỆN & BÀI TẬP CƠ BẢN 25

II DỊNG LẶP WHILE … DO & REAPEAT …UNTIL 30

III DỊNG LẶP FOR…TO…DO 35

IV MẢNG MỘT CHIỀU & MẢNG HAI CHIỀU 41

V XÂU KÍ TỰ (CHUỔI) 52

VI FILE 57

VII CHƯƠNG TRÌNH CON 61

Trang 4

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 1 CÁC THÀNH PHẦN CƠ BẢN CỦA NGƠN NGỮ LẬP TRÌNH PASCAL

Pascal là một ngơn ngữ lập trình bậc cao do Niklaus Wirth, giáo sư điện tốn trường Đại học kỹ thuật Zurich (Thụy Sĩ) đề xuất năm 1970 Ơng lấy tên Pascal để kỷ niệm nhà tốn học và nhà triết học người Pháp nổi tiếng Blaise Pascal

I CÁC TẬP TIN CẦN THIẾT TRONG PASCAL

Để lập trình được với Turbo Pascal, tối thiểu cần 2 file sau:

 TURBO.EXE: Dùng để soạn thảo và dịch chương trình

 TURBO.TPL: Thư viện chứa các đơn vị chuẩn để chạy với TURBO.EXE

Ngồi ra, muốn lập trình đồ hoạ thì phải cần thêm các tập tin:

 GRAPH.TPU: Thư viện đồ hoạ

 *.BGI: Các file điều khiển các loại màn hình tương ứng khi dùng đồ hoạ

 *.CHR: Các file chứa các font chữ đồ họa

II CÁC BƯỚC CƠ BẢN KHI LẬP TRÌNH

Bước 1: Soạn thảo chương trình

Bước 2: Dịch chương trình (nhấn phím F9), nếu cĩ lỗi thì phải sửa lỗi

Bước 3: Chạy chương trình (nhấn phím Ctrl + F9)

III CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH PASCAL

Program <Tên_Chương_Trình>;

Uses Crt; {Khai báo thư viện hàm}

Const <Hằng> = <Giá Trị>; {Khai báo hằng}

Var <Biến 1>,<Biến 2> : <Kiểu Dữ Liệu>; {Khai báo biến}

Begin

Clrscr; { Lệnh xĩa màn hình kết quả }

Write(‘<Yêu cầu nhập liệu>’); Readln(<Biến>); { Nếu cần}

{Xử lĩ và hiện kết quả}

Writeln(‘<Thơng báo kết quả>’,<kết quả>); { Nếu cần}

Readln; {Giữ màn hình kết quả}

End

Giải thích cấu trúc các khai báo trên:

Nếu cĩ phần khai báo nào cần cho chương trình thì phải tuân theo thứ tự trên, ví dụ: phần khai báo thư

viện (USES) khơng thể đặt sau phần khai báo hằng số (CONST) hoặc sau (VAR) sau mỗi phần khai báo

phải cĩ dấu ‘;’

- Program: Từ khố này dùng để khai báo tên chương trình Tên chương trình phải tuân theo quy tắc:

+ Khơng cĩ ký tự trống xen giữa

+ Khơng đặt số ở ký tự đầu tiên

+ Trong phần tên khơng chứa các ký tự đặt biệt như: ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’,

‘&’, ‘* ’, ‘(‘, ‘)’, ‘-‘, ‘+’, ‘/’, ‘\’, ‘.’, ’,’,.v.v

+ Kết thúc phải cĩ dấu ‘;’

+ Phần này cĩ thể khơng cĩ

- Uses: Từ khố này dùng để khai báo việc sử dụng Unit (thư viện) cho chương trình

- Const: Từ khố này dùng để khai báo các hằng số sử dụng trong chương trình, khi báo hằng số là

việc cố định một vài giá trị nào đĩ trong chương trình thơng qua tên hằng, ví dụ cách khai báo hằng:

- Var: Từ khố dùng để khai báo các biến số được sử dụng trong chương trình Biến số là các giá trị

cĩ thể thay đổi được trong suốt quá trình chạy của chương trình Khái niệm về biến số rất quan trọng trong việc lập trình (khái niệm này được trình bày kỹ ở bài 3) Một ví dụ về cách khai báo biến:

Var HoDem, Ten : String;

N : Integer;

Ghi chú:

- Thứ tự các khai báo trên là điều bắt buộc, ta phải nắm thứ tự này cho dù một số khái niệm ta chưa được biết Trong chương trình Pascal, để tạo lời chú thích, ta sử dụng cặp dấu { } hoặc (* *) lồng các câu chú thích vào bên trong nĩ

- Trên một dịng cĩ thể viết một hoặc nhiều câu lệnh Các lệnh cách nhau bằng dấu chầm phẩy

Trang 5

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Ví dụ :

Program GioiThieu;

Begin

Writeln ( ‘Truong THCS Luong Tam‘ );

Write ( ‘Ap 3 – Luong Tam – Long My – Hau Giang‘ );

End

IV MỘT SỐ PHÍM TẮT CƠ BẢN KHI LẬP TRÌNH

- F2: Lưu chương trình trong khi soạn thảo

- F3: Tạo một file mới hoặc mở một file cũ

- F9: Dịch thử chương trình để kiểm tra lỗi

- Ctrl - F9: Chạy chương trình

- Alt - F5: Xem kết quả chạy chương trình

- Alt - X: Thốt khỏi màn hình soạn thảo chương trình Pascal

 Insert: Chuyển qua lại giữa chế độ đè và chế độ chèn

 Home: Đưa con trỏ về đầu dịng

 End: Đưa con trỏ về cuối dịng

 Page Up: Đưa con trỏ lên một trang màn hình

 Page Down: Đưa con trỏ xuống một trang màn hình

 Del: Xố ký tự ngay tại vị trí con trỏ

 Back Space (): Xĩa ký tự bên trái con trỏ

 Ctrl-PgUp: Đưa con trỏ về đầu văn bản

 Ctrl-PgDn: Đưa con trỏ về cuối văn bản

 Ctrl-Y: Xĩa dịng tại vị trí con trỏ

V CÁC THÀNH PHẦN CƠ BẢN TRONG NGƠN NGỨ PASCAL

1 Từ khĩa

Các từ khố là các từ dùng để khai báo, đặt tên cho đối tượng trong Pascal, khi ta đặt tên cho đối tượng nào đĩ, khơng được đặt trùng tên với các từ khố

Bảng từ khố trong ngơn ngữ Pascal gồm:

and, array, begin, case, const, div, do, downto, else, end, file, for, function, goto, if, in, label, mod, nil, not, object, of, or, procedure, program, record, repeat, set, string, then, to, type, unit, until, uses, var, while, with

Turbo Pascal khơng phân biệt ký tự thường hoặc hoa Ví dụ, các cách viết sau cĩ ý nghĩa như nhau:

Begin, BEGIN, begin, beGIN, bEGIN,

2 Tên (định danh)

Tên (định danh) là một dãy ký tự dùng để đặt tên cho các hằng, biến, kiểu, tên chương trình con Khi đặt tên, ta phải chú ý một số điểm sau:

 Khơng được đặt trùng tên với từ khố

 Ký tự đầu tiên của tên khơng được bắt đầu bởi các ký tự đặc biệt hoặc chữ số Khơng được đặt tên với ký tự space, ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’,‘&’, ‘* ’, ‘(‘, ‘)’, ‘-‘, ‘+’, ‘/’, ‘\’, ‘.’, ’,’,.v.v

3 Hằng

- Hằng là một đại lượng cĩ giá trị khơng thay đổi trong suốt chương trình

- Cú pháp khai báo: CONST <Tên hằng> = <Giá trị>;

Ví dụ: CONST Max = 100;

Name = 'Tran Van Hung';

Continue = FALSE;

4 Biến

- Biến là một đại lượng mà giá trị của nĩ cĩ thể thay đổi trong quá trình thực hiện chương trình

- Cú pháp khai báo: VAR <Tên bi n>,<Tên bi n 2>, : <Ki u d li u>;

Ví dụ: VAR x, y: Real; {Khai báo hai biến x, y cĩ kiểu là Real}

a, b: Integer; {Khai báo hai biến a, b cĩ kiểu integer}

Trang 6

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 2 CÁC THÀNH PHẦN CƠ BẢN TRONG PHẦN THÂN CHƯƠNG TRÌNH

I BIỂU THỨC

Biểu thức (expression) là cơng thức tính tốn mà trong đĩ bao gồm các phép tốn, các hằng, các biến, các hàm và các dấu ngoặc đơn

Ví dụ: (x +sin(y))/(5-2*x) biểu thức số học

(x+4)*2 = (8+y) biểu thức logic

Trong một biểu thức, thứ tự ưu tiên của các phép tốn được liệt kê theo thứ tự sau:

 Dấu ngoặc ( )

 Phép tốn một ngơi (NOT, -)

 Phép tốn *, /, DIV, MOD, AND

 Phép tốn +, -, OR, XOR

Để xuất dữ liệu ra màn hình, ta sử dụng ba dạng sau:

WRITE(<tham số 1> [, <tham số 2>, ]);  Sau khi xuất giá trị của các tham số ra màn hình thì con trỏ khơng xuống dịng

WRITELN(<tham số 1> [, <tham số 2>, ]);  Sau khi xuất giá trị của các tham số ra màn hình thì con trỏ xuống đầu dịng tiếp theo

READLN(<biến 1> [,<biến 2>, ,<biến n>]);

Chú ý: Khi gặp câu lệnh READLN; (khơng cĩ tham số), chương trình sẽ dừng lại chờ người sử dụng nhấn phím ENTER mới chạy tiếp

4 Lệnh ghép:

Lệnh ghép là một nhĩm các câu lệnh được đặt giữa hai từ khố BEGIN và END

Lệnh ghép được thực hiện bằng cách thực hiện tuần tự các câu lệnh nằm giữa BEGIN và END

Trang 7

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 3 CÁC KIỂU DỮ LIỆU CƠ BẢN

2 Các phép tốn trên kiểu Logic

Các phép tốn: phép so sánh (=, <, >) và các phép tốn logic: AND, OR, XOR, NOT

Trong Pascal, khi so sánh các giá trị boolean ta tuân theo qui tắc: FALSE < TRUE

Giả sử A và B là hai giá trị kiểu Boolean Kết quả của các phép tốn được thể hiện qua bảng dưới đây:

II KIỂU SỐ NGUYÊN

1 Khai báo

Var <biến 1>, <biến 2>: <Kiểu số nguyên>;

Ví dụ: Var a,b: Longint;

2 Sử dụng hàm Random(n) để lấy số ngẫu nhiên:

Hàm Random(n) sẽ trả về một giá trị nguyên mà máy lấy ngẫu nhiên cĩ giá trị từ 0 đến n Trong đĩ, n là một số kiểu Word tức là trong khoản từ 0 65535 Trước khi sử dụng hàm Random ta phải gọi thủ tục Randomize để khởi tạo bộ tạo số ngẫu nhiên

3 Các phép tốn trên kiểu số nguyên

Các phép tốn số học: +, -, *, / (phép chia cho ra kết quả là số thực)

Phép chia lấy phần nguyên: DIV (Ví dụ : 34 DIV 5 = 6)

Phép chia lấy số dư: MOD (Ví dụ: 34 MOD 5 = 4)

III KIỂU SỐ THỰC

1 Khai báo

Cú pháp: Var <biến 1>, <biến 2>: <Kiểu số thức>;

Ví dụ: Var so: Real

tong: Double;

Trang 8

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Các kiểu số thực

Single 1.510-45

 3.410+38 4 byte Real 2.910-39  1.710+38 6 byte Double 5.010-324  1.710+308 8 byte Extended 3.410-4932  1.110+4932 10 byte

2 Các phép tốn trên kiểu số thực: +, -, *, /

- Trên kiểu số thực khơng tồn tại các phép tốn DIV và MOD

- Biến số thực cĩ thể nhận giá trị nguyên Nhưng biến số nguyên khơng nhận được giá trị thực

3 Các hàm số học sử dụng cho kiểu số nguyên và số thực:

SQR(x): Trả về x2

SQRT(x): Trả về căn bậc hai của x (x0)

ABS(x): Trả về |x|

SIN(x): Trả về sin(x) theo radian

COS(x): Trả về cos(x) theo radian

ARCTAN(x): Trả về arctang(x) theo radian

LN(x): Trả về ln(x)

EXP(x): Trả về ex

TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé hơn x

INT(x): Trả về phần nguyên của x

FRAC(x): Trả về phần thập phân của x

ROUND(x): Làm trịn số nguyên x

PRED(n): Trả về giá trị đứng trước n

SUCC(n): Trả về giá trị đứng sau n

ODD(n): Cho giá trị TRUE nếu n là số lẻ

INC(n): Tăng n thêm 1 đơn vị (n:=n+1)

DEC(n): Giảm n đi 1 đơn vị (n:=n-1)

IV KIỂU KÍ TỰ

1 Khai báo

Cú pháp: Var <biến 1>, <biến 2>: Char;

Ví dụ: Var kt, chuso: char;

Để biểu diễn một ký tự, ta cĩ đặt ký tự trong cặp dấu nháy đơn

Ví dụ kt:='A';

Chuso:= '0';

 Dùng hàm CHR(n) (trong đĩ n là mã ASCII của ký tự cần biểu diễn, bảng mã ASCII cĩ 255 kí tự)

Ví dụ CHR(65) biễu diễn ký tự 'A'

2 Các phép tốn: =, >, >=, <, <=,<>

3 Các hàm trên kiểu ký tự:

- UPCASE(ch): Trả về ký tự in hoa tương ứng với ký tự ch Ví dụ: UPCASE('a') = 'A'

- ORD(ch): Trả về số thứ tự trong bảng mã ASCII của ký tự ch Ví dụ ORD('A')=65

- CHR(n): Trả về ký tự tương ứng trong bảng mã ASCII cĩ số thứ tự là n Ví dụ: CHR(65)='A'

- PRED(ch): cho ký tự đứng trước ký tự ch Ví dụ: PRED('B')='A'

- SUCC(ch): cho ký tự đứng sau ký tự ch Ví dụ: SUCC('A')='B'

V KIỂU XÂU KÍ TỰ

Cú pháp: Var Biến1, Biến2, Biếnn: String; (1)

Var Biến1, Biến2, Biếnn: String [30]; (2)

Ví dụ: Var ten: String[20];

noisinh: String;

- Là kiểu dữ liệu chứa các giá trị là nhĩm các ký tự hoặc chỉ một ký tự, kể cả chuỗi rỗng Độ dài tối đa

của một biến kiểu String là 255, tức là nĩ cĩ thể chứa tối đa một dãy gồm 255 ký tự

Cách khai báo (1) sẽ cho phép biến HoTen nhận tối đa 255 ký tự Cách (2) cho phép biến HoTen nhận tối đa 30 ký tự

Trang 9

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 4 CÂU LỆNH LỰA CHỌN (RẼ NHÁNH)

I LỆNH IF

1 Cú pháp:

Dạng thiếu: IF <Điều kiện> THEN <Câu lệnh>

Dạng đủ: IF < Điều kiện> THEN < Câu lệnh 1> ELSE < Câu lệnh 2>;

Giải thích lệnh: Khi gặp lệnh này máy kiểm tra < Điều kiện> nếu biểu thức này cĩ giá trị TRUE (tức là đúng như điều kiện đặt ra) thì máy thực hiện <câu lệnh1> nếu ngược lại, tức <biểu thức logic> cĩ giá trị FALSE thì <câu lệnh 2> được thực hiện Trường hợp trong câu lệnh khơng cĩ phần ELSE và <biểu thức logic> cĩ giá trị FALSE thì <câu lệnh> khơng được thực hiện và máy chuyển đến câu lệnh kế sau lệnh IF

Write( ‘ Nhap so a: ‘ ); Readln(a);

Write( ‘ Nhap so b: ‘ ); Readln(b);

If a > b then Write( ‘ So lon hon la ‘, a) { tại vị trí này khơng được đặt dấu; }

Else Write( ‘ So lon hon la ‘, b);

Readln;

End

Ví dụ 2: Viết chương trình kiểm tra trong ba số a, b, c được nhập từ bàn phím, số nào là lớn nhất

Var a, b, c, max : Integer;

Begin

Write( ‘ Nhap so a: ‘ ); Readln(a);

Write( ‘ Nhap so b: ‘ ); Readln(b);

Write( ‘ Nhap so c: ‘ ); Readln(c);

Max := a;

If max < b thenMax := b;

If max < c then Max := c;

Write( ‘ So lon hon la ‘, max);

Hằng n: Sn; END;

CASE B OF Hằng 1: S1; Hằng 2: S2;

Hằng: Sn; ELSE Sn+1; END;

Trong đĩ:

 B: Biểu thức kiểu vơ hướng đếm được như kiểu nguyên, kiểu logic, kiểu ký tự, kiểu liệt kê

 Hằng i: cĩ thể là một giá trị hằng, các giá trị hằng (phân cách nhau bởi dấu phẩy) hoặc các đoạn hằng (dùng hai dấu chấm để phân cách giữa giá trị đầu và giá trị cuối)

 Giá trị của biểu thức và giá trị của tập hằng i (i=1¸n) phải cĩ cùng kiểu

Khi gặp lệnh CASE, chương trình sẽ kiểm tra:

- Nếu giá trị của biểu thức B nằm trong tập hằng Hằng i thì máy sẽ thực hiện lệnh Si tương ứng

Trang 10

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

- Ngược lại:

+ Đối với dạng 1: Khơng làm gì cả

+ Đối với dạng 2: thực hiện lệnh Sn+1

0 4 : Write( ‘ Xep loai yeu ‘ );

5 6 : Write( ‘ Xep loai Trung binh ‘ );

7 8 : Write( ‘ Xep loai Kha ‘ );

9 10: Write( ‘ Xep loai Gioi ‘ );

Trang 11

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 5 VỊNG LẶP VỚI SỐ LẦN BIẾT TRƯỚC (FOR) Trường hợp để giải quyết bài tốn nào đĩ mà ta cần phải lặp đi lặp lại một cơng việc nào đĩ thì ta sẽ cần đến lệnh lặp Số bước lặp cĩ thể xác định hoặc khơng xác định Trong ngơn ngữ Pascal cĩ ba câu lệnh

lặp là FOR, REPEAT, WHILE Nếu số vịng lặp xác định thì ta sử dụng lệnh FOR cịn vịng lặp khơng xác định thì ta sử dụng lệnh REPEAT hoặc WHILE Tất cả các loại lệnh lặp phải cĩ điểm dừng, cho dù đĩ là

loại xác định hay khơng xác định

I DẠNG TIẾN:

1 Cú pháp:

FOR <Biến> := <giá trin Min> TO <giá trị max> DO < Câu Lệnh >;

Trong đĩ:

<Biến> trong cấu trúc FOR gọi là biến điều khiển Kiểu của biến điều khiển là kiểu số nguyên,

<giá trin Min>, <giá trị max> phải là kiểu vơ hướng đếm được (số nguyên, kí tự…)

2 Cơng dụng:

B1: Đầu tiên, Biến nhận giá trị của <giá trin Min>

B2: Máy kiểm tra Biến cĩ nhỏ hơn hoặc bằng <giá trị max> hay khơng tức là xét điều kiện

B3: Nếu điều kiện trên là sai thì máy thốt khỏi vịng lặp FOR để thực hiện các lệnh kế tiếp sau vịng lặp FOR Nếu điều kiện trên là đúng thì < Câu Lệnh > được thực hiện, sau đĩ, Biến được tăng một giá trị

và quay trở lại bước (2)

B1: Đầu tiên, Biến nhận giá trị của <giá trin Max>

B2: Máy kiểm tra Biến cĩ lớn hơn hoặc bằng <giá trin Min> hay khơng tức là xét điều kiện

B3: Nếu điều kiện trên là sai thì máy thốt khỏi vịng lặp FOR để thực hiện các lệnh kế tiếp sau vịng lặp FOR Nếu điều kiện trên là đúng thì < Câu Lệnh > được thực hiện, sau đĩ, Biến được giảm một giá trị

và quay trở lại B2

3 Lưu ý

- Khơng được thay đổi giá trị của biến điều khiển bằng một lệnh bất kỳ trong vịng lặp FOR Điều này

cĩ thể làm cho vịng lặp khơng cĩ lối thốt và dân đến treomáy

- Các <giá trin Min> và <giá trin Max> được ước lượng trước khi vào vịng lặp, do đĩ số vịng lặp

khơng bị thay đổi Ta cĩ thể lợi dụng tính tăng hoặc giảm của biến điều khiển để gán giá trị của nĩ cho bất

kỳ biến nào hoặc thực hiện cơng việc nào đĩ cĩ tính chất tăng hoặc giảm

Trang 12

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 6 VỊNG LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC

Dạng REPEAT Dạng WHILE Repeat

S;

Until B;

While B Do S;

Ý nghĩa: Dạng REPEAT: Lặp lại cơng việc S cho đến khi biểu thức B=TRUE thì dừng

Dạng WHILE: Trong khi biểu thức B=TRUE thì tiếp tục thực hiện cơng việc S

3 Lưu ý

- Các lệnh nằm giữa REPEAT và UNTIL khơng cĩ từ khố Begin và End

- Trong vịng lặp phải cĩ lệnh nào đĩ làm thay đổi giá trị một biến trong <Biểu thức logic> nhằm làm

dừng vịng lặp, nếu khơng vịng lặp sẽ chạy mãi khơng ngừng dẫn đến treo máy

Ví dụ: Chương trình yêu cầu nhập vào một mật khẩu là ‘ttthcn’ thì mới thốt khỏi chương trình

- Gặp lệnh này trước tiên máy kiểm tra < Biểu thức logic >, nếu nĩ cĩ giá trị TRUE thì thực hiện

< Lệnh > và sau đĩ quay lại kiểm tra < Biểu thức logic > và quá trình cứ tiếp tục như vậy

- Nếu < Biểu thức logic > nhận giá trị FALSE thì máy lập tức thốt khỏi vịng lặp Như vậy lệnh WHILE dùng để lặp đi lặp lại một cơng việc trong khi điều kiện cịn được thỏa mãn

3 Lưu ý

Nếu ngay từ khi mới vào vịng lặp mà thấy điều kiện khơng được thỏa mãn, máy tự động thốt ngay mà

khơng thực hiện < Lệnh > bên trong vịng lặp

Ví dụ: Chương trình tìm ước số chung lớn nhất của hai số nguyên

Var a, b, r : Integer; tl : Char;

Trang 13

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Writeln( ‘ Uoc so chung lon nhat la ‘ , a );

Write( ‘ Ban tim USCLN nua khong (C/K) ? );

Readln(tl);

Until Upcase(tl) = ‘K’;

End

Trang 14

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 7

DỮ LIỆU KIỂU MẢNG (ARRAY)

I KHÁI NIỆM

Mảng (Array) là một kiểu dữ liệu cĩ cấu trúc bao gồm một số cố định các thành phần cĩ cùng kiểu, cĩ

cùng một tên chung Các thành phần của mảng được truy xuất thơng qua các chỉ số

Ví dụ: Mảng A gồm năm phần tử: A[1]=7, A[2]=9, A[3]=0, A[4]= -2, A[5]=3:

Cơng dụng của mảng là dùng để lưu trữ một dãy số liệu cĩ cùng một tính chất nào đĩ Ví dụ: các điểm kiểm tra một mơn học nào đĩ của một học sinh, các giá trị của một dãy số được nhập từ bàn phím

II KHAI BÁO MẢNG

- Kiểu phần tử là kiểu dữ liệu của mỗi phần tử trong mảng (Integer, real, string, …)

- 1 n là danh sách các chỉ số để truy cập đến các thành phần của mảng

Ví dụ:

Var ch : Array[0 25] of Char;

Th : Array[-2 4] of Real;

b Truy cập câc phần tử của mảng:

Việc truy nhập vào một phần tử nào đĩ của biến mảng được thực hiệnh qua tên biến mảng, theo sau là

giá trị chỉ số đặt trong dấu [ ]

b Truy cập câc phần tử của mảng:

Số phần tử của mảng số thực B là 3 x 3 = 9 (phần tử), sắp đặt trong bộ nhớ theo thứ tự như sau: B[1, 1] B[1, 2] B[1 ,3]

Trang 15

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

B[2, 1] B[2, 2] B[2 ,3]

B[3, 1] B[3, 2] B[3 ,3]

Chú ý: Mảng hai chiều cịn gọi là ma trận Trong ví dụ trên, B là ma trận cấp 3x 3 Trong mảng hai chiều, chỉ số sau truy cập nhanh hơn chỉ số trước Để truy cập đến phần tử hàng thứ i, cột thứ j của mảng hai chiều B ta dùng cách viết: B[ i ][ j ] hoặc B[ i , j ]

For i := 1 to m do Sum := sum + a[ i, j ];

Write( ‘ Tong cot ‘ , j ,’ = ‘ , sum : 0 : 5 );

End;

For i := 1 to m do

Begin

sum := 0;

For j := 1 to n do Sum := sum + a[ i, j ];

Write( ‘ Tong hang ‘ , i ,’ = ‘ , sum : 0 : 5 );

End;

Readln;

END

Trang 16

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 8 XÂU KÝ TỰ (STRING)

I KHAI BÁO KIỂU STRING

Xâu (String) là kiểu dữ liệu cĩ cấu trúc dùng để xử lý các xâu ký tự Kiểu String cĩ nhiều điểm tương

tự như kiểu mảng (Array) nhưng cũng cĩ điểm khác nhau là: số ký tự trong một biến kiểu xâu cĩ thể thay

đổi cịn số phần tử của kiểu mảng luơn cố định

Cú pháp: VAR Tên biến : STRING[Max];

Trong đĩ Max là số ký tự tối đa cĩ thể chứa trong chuỗi (Max  [0,255]) Nếu khơng cĩ khai báo [Max] thì số ký tự mặ mặc định trong chuỗi là 255

Ví dụ: Var Name : String[50];

St : String; {St cĩ tối đa là 255 ký tự}

II TRUY XUẤT DỮ LIỆU KIỂU STRING

Muốn in một xâu ký tự ta dùng lệnh Write(St) hoặc Writeln(St)

Lệnh Readln(St) sẽ đọc các ký tự cho xâu St với độ dài thực sự là số ký tự gõ vào từ bàn phím Nếu ta

gõ < Enter > luơn mà khơng nhập cho nĩ ký tự nào thì St là xâu rỗng

Đại lượng bên phải của lệnh phải được đặt giữa hai dấu nháy đơn nếu đĩ là xâu ở dạng hằng Ta cĩ thể

sử dụng dấu cộng (+) để ghép các xâu khi gán Ví dụ:

HoTen:= ‘Huynh Ngoc‘ + ‘ Nhan‘;

‘ABC’ = ‘ABC’ cĩ giá trị True

‘ABC’ = ‘AB’ cĩ giá trị là False

‘ABCD’ < ‘ABED’ cĩ giá trị là True

‘ABC’ > ‘AD’ cĩ giá trị là False

IV CÁC THỦ TỤC VÀ HÀM VẾ XÂU KÝ TỰ

1 Các thủ tục:

a Delete(St , Pos, Num):

Trong đĩ: - St (String): Biến kiểu String

- Pos (Position): Biến kiểu nguyên

- Num (Number): Biến kiểu nguyên

Cơng dụng: Thủ tục này dùng để xĩa khỏi xâu St một số Num ký tự bắt đầu từ vị trí thứ Pos

Ví dụ: Nếu St = ‘ABCDEFG’; thì:

Delete(St, 2, ); ð làm cho St = ‘AFG’

Trang 17

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Delete(St, 2, 10); ð làm cho St = ‘A’

Delete(St, 9, 3); ð làm cho St = ‘ABCDEFG’

b Insert(St2, St1, Pos):

Trong đĩ: - St2 và St1: Biến kiểu String

- Pos: Biến kiểu nguyên

Cơng dụng: Thủ tục này dùng để chèn xâu St2 vào xâu St1 ở vị trí Pos

Trong đĩ: - Value: Là một biểu thức nguyên hay thực cĩ ghi dạng in ra

- St: Biến kiểu String

Cơng dụng: Thủ tục này dùng để đổi giá trị số Value thành kiểu xâu rồi gán cho St

d Val(St, Var, Code):

Trong đĩ: - St: Biểu thức kiểu String

- Var: Là biến kiểu nguyên hay thực

- Code: Biến kiểu nguyên

Cơng dụng: Thủ tục này đổi xâu chữ St (biểu diên ở dạng số nguyên hay thực) thành số và gán cho biến Var Code là biến nguyên dùng để phát hiện lỗi: nếu phép biến đổi đúng thì Code cĩ giá trị 0, nếu sai do St khơng biểu diễn đúng số nguyên hay thực thì Code sẽ cĩ giá trị bằng vị trí của ký tự sai trong xâu St Giả sử: St := ‘234’ , i và e là hai biến nguyên

Val(St, i, e); { cho ta i = 234 và e = 0 }

Nếu St := ‘21x’ thì Val(St, i, e) {cho ta i khơng xác định và e=3, tức là ký tự thứ ba gây ra lỗi}

2 Các hàm:

a Length(St):

Cho ta độ dài của biểu thức xâu ký tự St Ví dụ: với St = ‘’ABCDEFG’ thì Length(St) sẽ trả về giá trị 7

b Copy(St, Pos, Num):

Trong đĩ: - St: Biểu thức kiểu xâu ký tư

- Pos,Num: Biểu thức kiểu nguyên

Hàm này trả về cho ta một xâu mới từ xâu St, hàm bắt đầu chép từ vị trí Pos và chép Num ký tự Ví dụ:

St = ‘ABCDEF’ thì lệnh Copy(St, 3, 2) = ‘CD’ và Copy(St,4, 10) cho ta ‘DEF’

Ghi chú:

- Nếu Pos + Num > Length(St) thì hàm sẽ trả về các ký tự trong xâu St

- Nếu Pos > Length(St) thì hàm Copy sẽ trả về cho ta một xâu rỗng

c Concat(St1, St2, , Stn):

Hàm này dùng để ghép tất cả các xâu ký tự St1, St2, ,Stn thành một xâu theo thứ tự các đối số cung

cấp cho hàm

Ghi chú:

- Số lượng đối của hàm Concat phải >= 2

- Nếu tổng số chiều dài các xâu > 255 thì máy sẽ báo lỗi

- Cĩ thể dùng phép cộng (+) để ghép xâu ký tự Ví dụ: St :=Concat(St1,St2 +’N’);

d Pos(St1, St2):

Trong đĩ: St1, St2 là biểu thức xâu ký tự

Hàm này trả về số nguyên biểu diễn vị trí đầu tiên của St1 gặp trong xâu St2 Nếu khơng tìm thấy thì Pos = 0

Ví dụ: nếu St := ‘ABCDEFGBCD’ thì Pos(‘DE’,St) = 4, Pos(‘BCD’,St) = 2, Pos(‘XY’,St) = 0

Trang 18

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 9 KIỂU TẬP HỢP

Type Chu_so = Set of 0 9;

Chu_hoa = Set of ‘A’ ‘Z’;

Var So : Chu_so;

Chu : Chu_hoa;

Mau : Set of (Xanh, Vang, Tim);

Chú ý: Các giá trị được đưa vào tập hợp cần cĩ số thứ tự trong khoản từ 0 đến 255 Như vậy, với khai

báo:Type Tap_so = Set of 10 256; Kết quả khi dịch máy sẽ thơng báo lỗi: Set base type out of range

- Một dữ liệu kiểu tập hợp cĩ dạng các phần tử nằm trong hai dấu ngoặc [ ] Ví dụ: [‘A’, ’E’ ], [3,5 9];

Phép tốn = cho giá trị True nếu hai tập hợp bằng nhau

Phép tốn < > cho giá trị True nếu hai tập hợp khác nhau

Phép tốn <= (A <= B) cho giá trị True nếu A là tập con của B

Phép tốn >= (A >= B) cho giá trị True nếu B là tập con của A

Chú ý: Khơng cĩ phép tốn < và > cho kiểu tập hợp Để kiểm tra tập hợp A cĩ thật sự nằm trong B hay khơng ta dùng câu lệnh: If (A< > B) and (A<=B) then Write( ‘A la tap con that su cua B ‘);

2 Phép tốn IN:

Phép tốn IN dùng để xem xét một phần tử nào đĩ cĩ nằm trong tập hợp khơng ?

Nếu phần tử đĩ cĩ trong tập hợp thì phép tốn sẽ trả về giá trị True, ngược lại cho giá trị False Ví dụ:

‘C’ In [‘A’, ’C’, ‘D’] cho kết quả True.‘E’ In [‘A’, ’C’, ‘D’] cho kết quả False

3 Phép tốn hợp, giao, hiệu:

A + B là hợp của A và B: tập hợp các phần tử thuộc A hoặc thuộc B

A * B là giao của A và B: tập hợp các phần tử thuộc A và thuộc B

A - B là hiệu của A và B: tập hợp các phần tử thuộc A và khơng thuộc B

Ví dụ: Viết chương trình nhập vào một chữ cái Xét xem chữ cái đĩ là nguyên âm hay phụ âm

Var ChuCai, NguyenAm : Set of Char;

Ch : char;

Begin

ChuCai := [‘A’ ’Z’, ‘a’ ‘z’];

NguyenAm := [‘A’, ‘E’, ‘I’, ‘O’, ‘U’];

Trang 19

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

các dịng, mơi dịng được kết thúc bởi dấu hiệu EOLN (End Of Line) Như vậy, muốn đọc và in ra từng

dịng của tệp văn bản thì sử dụng dạng Text Tệp văn bản được kế tthúc bởi dấu End Of File, cụ thể với

Turbo Pascal là Ctrl-Z (^Z) cĩ mã ASCII = 26

Cú pháp: Var <Biến text>: Text;

Ví dụ: Var f, g: text;

II CÁC THAO TÁC TRÊN TỆP

1 Ghi vào một tệp văn bản:

Ta cĩ thể ghi các giá trị kiểu Integer, Real, Boolean,String vào tệp văn bản bằng lệnh Write hoặc

Writeln Cĩ ba dạng viết:

Write(FileVar, Item1, Item2, ,ItemN); (1)

Writeln(FileVar, Item1, Item2, ,ItemN ); (2)

Lệnh (3): chỉ thực hiện việc đưa thêm dấu hiệu hết dịng vào tệp

Ghi chú: Từ câu lệnh (2) ta cĩ thể chuyển sang viết như sau:

Cấu trúc cơ bản để mở và ghi tệp là:

Assign(<Biến text>,’<Nơi lưu tệp>’);

Trang 20

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Assign(F, ’D:\ChuCai.txt’); {Gán tệp Chucai.txt cho biến F}

ReWrite(F); {Mở tệp Chucai.txt – chưa cĩ phần tử nào}

For ch:= ’a’ to ‘z’ do Write(F, ch,’ ‘); {Ghi giá trị của biến Ch và khoảng trắng vào file F }

Close(F); {Sau khi ghi xong đĩng File F}

Read(FileVar, Var1, Var2, ,VarN); (1)

Readln(FileVar, Var1, Var2, ,VarN); (2)

Readln(FileVar); (3)

Trong đĩ, Var1, Var2, ,VarN là các biến thuộc kiểu ký tự, nguyên, thực, logic, chuỗi Lệnh (1) sẽ đọc nội dung một hay nhiều phần tử mà khơng chuyển cửa sổ tệp xuống dịng Lệnh (2) đọc như lệnh (1) nhưng sẽ di chuyển cửa sổ tệp sang đầu dịng tiếp theo sau khi đã lần lượt đọc các biến tương ứng Lệnh (3) đưa cửa sổ tệp sang đầu dịng tiếp theo mà khơng đọc gì cả

Cấu trúc cơ bản để đọc dữ liệu từ một tệp đã cĩ như sau:

Assign(<Biến text>,’<Nơi lưu tệp>’); Reset(<Biến text>);

While not EOF(<Biến text>) do

Begin

Read(<Biến Tệp>,<Biến lưu giá trị>);

{Xử lí biến lưu giá trị theo yêu cầu của đề bài}

End;

Close((<Biến text>);

Ví dụ 1: Giả sử đã tồn tại một tệp cĩ tên là Nguyen.txt chứa các số kiểu Byte và cĩ ít nhất ba phần tử

Thực hiện đọc ra giá trị thứ nhất và thứ ba của tệp và gán cho hai biến A, B tương ứng

Read(F,A); {đọc một phần tử thứ nhất của tệp ra biến A}

Read(F,B); {đọc một phần tử thứ hai của tệp ra biến B}

Read(F,B); {đọc một phần tử thứ hai của tệp ra biến B}

{lúc này B khơng giữ giá trị thứ hai nữa}

Close(F);

End

Ví dụ 2: Đọc tất cả các phần tử của một tệp chứa các số cĩ Integer nào đĩ và ghi ra màn hình giá trị các số

đĩ và cuối cùng ghi ra sĩ phần tử của tệp

Write(‘Tep can doc la gi ? ’); Readln(tenfile); {Nhập tên File cần đọc}

Assign(F, tenfile); {Mở File chuẩn bị đọc}

Reset(F); {Đưa con trỏ về đầu File chuẩn bị đọc}

Trang 21

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

1 Hàm EOF(Var F: Text): Boolean

Hàm trả về giá trị False khi cửa sổ tệp chưa đến cuối tệp, ngược lại, cho giá trị True Hàm này thường

sử dụng để kiểm tra xem đã đọc hết tệp văn bản chưa

Ví dụ: While not EOF(F) Do

2 Hàm EOLN(Var F: Text): Boolean

Hàm trả về giá trị False khi cửa sổ tệp chưa đến điểm cuối dịng hoặc cuối tệp, ngược lại, cho giá trị True Hàm này thường sử dụng để kiểm tra xem đã đọc đến cuối dịng chưa Ví dụ:

While not EOLN(F) Do

Trang 22

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Chương 11 CHƯƠNG TRÌNH CON

I KHÁI NIỆM

Trong khi lập trình chúng ta thường gặp những đoạn chương trình lặp đi lặp lại nhiều lần ở những chỗ khác nhau Để tránh rườm rà những đoạn chương trình này được thay thế bằng các chương trình con tương ứng Khi cần, ta chỉ cần gọi tên chương trình con đĩ ra

Lý do thứ hai để xây dựng chương trình con: Một vấn đề lớn và phức tạp sẽ tương ứng với một chương trình cĩ thể rất lớn và dài Do đĩ việc sửa chữa chương trình sẽ rất khĩ khăn Ta cĩ thể phân tích nĩ thành các vấn đề nhỏ hơn, để dễ kiểm tra, sau đĩ ghép lại thành một chương trình lớn

II PROCEDURE và FUNCTION (Thủ tục và Hàm)

Trong Pascal cĩ hal loại CTC :

- PROCEDURE (thủ tục)

- FUNCTION (hàm)

Sự khác nhau cơ bản và duy nhất của hai loại CTC này là FUNCTION trả lại một giá trị kết quả vơ hướng thơng qua tên function và do đĩ nĩ cĩ thể sử dụng như một biến, hằng biểu thức Cịn PROCEDURE khơng trả lại kết quả thơng qua tên của biểu thức nên procedure khơng thể viết trong biểu thức

III CẤU TRÚC CỦA CHƯƠNG TRÌNH CON

1 Function (hàm)

PROGRAM <TÊN CHƯƠNG TRÌNH CHÍNH>;

USES CRT;

VAR <BIẾN CỦA CHƯƠNG TRÌNH CHÍNH>: <KIỂU DỮ LIỆU>;

Function <tên hàm>(<đối số>:<kiểu dữ liệu>):<kiểu dữ liệu của hàm>; Var <biến ct con>:<kiểu dữ liệu>;

Kq:<kiểu dữ liệu hàm>;

Begin

<Thân chương trình con>;

<tên hàm>:=kq; {lấy giá trị cho hàm}

VAR <BIẾN CỦA CHƯƠNG TRÌNH CHÍNH>: <KIỂU DỮ LIỆU>;

procedure <tên thủ tục>(Var <đối số>:<kiểu dữ liệu>);

Var <biến thủ tục>:<kiểu dữ liệu>;

- Tham trị (value parameter)

- Tham biến (variable parameter)

Trang 23

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

VD : PROCEDURE Thidu(i,j:integer; VAR x,y:real);

Tham trị : i,j

Tham biến : x,y

Sự khác nhau giữa tham trị và tham biến :

- Tham trị cĩ thể là hằng, biến, biểu thức Cịn tham biến chỉ cĩ thể là biến

- Nếu tham trị là biến thì giá trị nĩ sẽ khơng thay đổi sau khi CTC thực hiện Cịn tham biến sẽ thay đổi giá trị nếu trong CTC cĩ lệnh làm thay đổi giá trị của nĩ

Trong này X là tham biến, ta chỉ cĩ thể viết

- DEC (X); X là biến kiểu nguyên

Khơng thể viết

- DEC (5); X là hằng

- DEC (Y*2); X là biểu thức

Sau khi gọi hàm giá trị của X sẽ thay đổi (giảm đi 1)

V FUNCTION VÀ CÁCH LỰA CHỌN

Trong FUNCTION bắt buộc phải cĩ lệnh gán giá trị cho tên hàm

Tên_hàm := <biểu thức>

Chúng ta chỉ nên dùng FUNCTION khi và chỉ khi nĩ đồng thời thoả các điều kiện sau :

- Nếu ta muốn nhận lại một và chỉ một kết quả

- Kết quả đĩ phải là kiểu vơ hướng

Cịn nếu khơng thoả mãn thì chúng ta nên dùng PROCEDURE

Khi kiểm tra xem tổng bình phương của a và b cĩ bằng c khơng :

- Nếu là FUNCTION ta viết :

IF Binh_Phuong(a)+Binh_Phuong(b) = Binh_phuong(c) THEN

- Nếu là PROCEDURE ta viết

Binh_Phuong (a,kqa);

Binh_Phuong (b,kqb);

Binh_Phuong (c,kqc);

IF kqa+kqb=kqc THEN

Rõ ràng cách dùng FUNCTION cĩ lợi hơn

VI BIẾN TỒN CỤC VÀ BIẾN ĐỊA PHƯƠNG

Trang 24

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

3 Chú ý

Nếu trong CTC cĩ khai báo biến (hằng) trùng với tên biến (hằng) trong chương trình chính thì chương trình con sẽ ưu tiên xử lý biến (hằng) trong chương trình chính Và khi thốt khỏi chương trình con đĩ Giá trị của biến trong chương trình vẫn giữ nguyên giá trị trước khi gọi CTC

Trên màn hình sẽ xuất hiện

5 Giá trị biến tồn cục

6 Giá trị biến địa phương

5 Giá trị biến tồn cục

VII TÍNH ĐỆ QUY CỦA CHƯƠNG TRÌNH CON

Trong PROCEDURE và FUNCTION cĩ thể cĩ lời gọi chính nĩ Tính chất này gọi là đệ quy

VD : Tính N! qua định nghĩa N! = 1.2.3 (n-1).n

hoặc định nghĩa theo đệ quy N! = 1 khi N=0

N! = (n-1)!.n khi N>=1 Khi đĩ hàm GIAI_THUA cĩ thể định nghĩa như sau

FUNCTION GIAI_THUA (n:integer):integer;

BEGIN

IF n=0 THEN GIAI_THUA := 1 ELSE GIAI_THUA := n*GIAI_THUA(n-1);

END;

Trang 25

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

BÀI TẬP

I CÂU LỆNH ĐIỀU KIỆN & BÀI TẬP CƠ BẢN

Bài 1: Nhập vào 2 cạnh của một hình chữ nhật In ra màn hình diện tích và chu vi của nĩ

writeln('Tinh chu vi va dien tich hinh chu nhat');

write('Nhap chieu dai: '); readln(a);

write('Nhap chieu rong: '); readln(b);

writeln('Tinh chu vi va dien tich hinh tron');

write('Nhap ban kinh: '); readln(r);

writeln('So sanh dien tich hinh chu nhat va hinh tron');

write('Nhap chieu dai: '); readln(a);

write('Nhap chieu rong: '); readln(b);

write('Nhap ban kinh: '); readln(r);

s1:=a*b;

s2:=pi*r*r;

if s1>s2 then writeln('Dien tich hinh CN lon hon dien tich ht')

else if s1<s2 then writeln('Dtich ht lon hon dien tich hinh CN')else writeln('Dien tich 2 hinh bang nhau');

Trang 26

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

clrscr;

writeln('Kiem tra so chan so le');

write('Nhap vao so nguyen duong: '); readln(a);

if (a mod 2=0) then writeln(a, ' la so chan')

else writeln(a,' la so le');

READLN;

END

Bài 5 : Tính tam giác: Nhập vào ba số a,b,c bất kì Kiểm tra xem nĩ cĩ thể là độ dài ba cạnh hay khơng, nếu khơng thì in ra màn hình ' Khong la ba canh cua mot tam giac' Ngược lại, thì in diện tích, chu vi của tam giác ra màn hình

if (a=b) and (a=c) and (b=c) then

writeln('day la ba canh cua tam giac deu') else

if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=a*a+b*b) then writeln('day la ba canh cua tam giac vuong') else

if (a=b) or (a=c) or (b=c) then

writeln('day la ba canh cua tam giac can') else

writeln('day la ba canh cua tam giac thuong');

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

writeln('chu vi tam giac la : ',p*2:0:6);

write('dien tich tam giac la : ',s:0:6);

end

else write('day khong phai la ba canh cua tam giac');

readln;

end

Trang 27

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Bài 7 : - Phép tốn chia hết là phép tốn cĩ số dư bằng 0

- Hãy viết chương trình, nhập vào số nguyên dương x (với 10 < x < 2011)

Với y = x 2 + 2011, kiểm tra và thơng báo ra mà hình xem y cĩ chia hết cho 5 hay khơng?

if y mod 5 = 0 then write(y,' chia het cho 5')

else write(y,' khong chia het cho 5');

if b=0 then writeln('Phuong trinh co vo so nghiem')

else writeln('Phuong trinh vo nghiem')

else writeln('Pt co nghiem duy nhat la x=',-b/a:0:2);

writeln(‘he vo so nghiem hoac vo nghiem’)

else writeln(‘he vo nghiem’)

else

Begin

Trang 28

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

phut:= tam div 60;

giay:= tam mod 60;

writeln(a,' = ',gio,':',phut,':', giay );

Trang 29

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

if d = 0 then write('phuong trinh co nghiem kep x1=x2=', b)/(2*a):0:6);

Trang 30

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

II DỊNG LẶP WHILE … DO & REAPEAT …UNTIL

Bài 1: Viết chương trình cho phép nhập vào 2 số nguyên dương, hiện ra màn hình ước chung lớn nhất của 2 số đĩ

Trang 31

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

Bài 4: Viết chương trình tìm và hiện ra màn hình n số nguyên tố đầu tiên (n nhập từ bàn phím)

i:=1;

Repeat

Trang 32

Giáo Trình Bồi Dưỡng Học Sinh Giỏi - Tin Học & Tin Học Trẻ

d[i]:=n mod 2;

n:=n div 2;

i:=i+1;

Until(n=0);

Write('So nhi phan la:');

For j:=i-1 downto 1 do Write (d[j]);

Write('So bat phan la:');

For j:=i-1 downto 1 do Write(d[j]);

Readln;

End

Bài 8: Số siêu nguyên tố là số nguyên tố mà khi bỏ chữ số ở bên phải của nĩ thì được số mới cũng

là một số nguyên tố Viết chương trình kiểm tra một số cĩ phải là siêu nguyên tố hay khơng

if (kt=true) then writeln(x,' la so sieu nguyen to!')

else writeln(x,' khong phai so sieu nguyen to!');

readln

end

Bài 9: Hiện ra màn hình một dãy số nuyên, sao cho số đứng sau bằng tổng bình phương các chữ số của số đứng trước nĩ (Số đầu tiên được nhập từ bàn phím, dãy kết thúc khi tìm được số trùng với một số bất kì trong dãy)

Ngày đăng: 19/10/2014, 20:58

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w