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

Tài liệu bồi dưỡng ngôn ngữ lập trình pascal

50 270 0

Đ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 50
Dung lượng 889,75 KB
File đính kèm Tài liệu ngôn ngữ lập trình Pascal.rar (807 KB)

Nội dung

Tài liệu bồi dưỡng ngôn ngữ lập trình Pascal là tài liệu cung cấp những kiến thức từ cơ bản đến nâng cao, có ví dụ minh họa cụ thể, dễ học và thực hành rất thiết thực dành cho học sinh, sinh viên, giáo viên tham khảo.

Trang 1

- Đặc điểm: Đó là ngôn ngữ Thông dịch và Biên dịch

+ Biên dịch: Là chương trình phải đúng hoàn toàn về mặt ngữ pháp mới chạy được + Thông dịch: Đúng lệnh nào thực hiện lệnh đó

2 Khởi động

- Chạy file Turbo.exe ( Xuất hiện giao diện Pascal)

- Soạn thảo trương trình nguồn

+ Ctrl + F9 để chạy thử và kiểm tra

+ F8 Cho chạy chương trình từng bước ( không kể chương trình con)

+ F7 Cho chạy chương trình từng bước ( kể chương trình con)

+ F2 Ngắt bổ chế độ chạy chương trình từng bước

- Các thao tác cơ bản trong Pascal

+ ấn F2 ghi file ( lần ghi đầu tiên gõ tên file )

+ Mở một file mới: Alt + F -> New

+ Mở 1 file có sẵn: F3 ấn phím Tab chọn

+ Đánh dấu khối: đặt con trỏ đầu khối Shift + -> ( <- )

để sao chép, di chuyển, …

+ Đánh dấu: Ctrl + K + C sao chép khối ( copy)

+ Đánh dấu: Ctrl + K + V Di chuyển khối( Move )

+ Đánh dấu: Ctrl + K + Y xóa khối

+ Đánh dấu: Ctrl + K + W Ghi vào file mới

+ ấn Alt + X thoát

3 Cấu trúc chương trình Pascal ( gồm 3 phần )

Trang 2

2

* Phần tiêu đề ( phần không bắt buộc )

- Program  < tên chương trình > ( gợi nhớ)

- Dấu chấm phảy ( ; ) dùng để ngăn cách giữa các câu lệnh

- Pascal chỉ quan tâm tới câu lệnh Một lệnh có thể viết trên nhiều dòng và ngược lại

- CT phải được viết theo kiểu thụt thò

- Tất cả các câu lệnh sau End đều không có giá trị khi chạy CT

Trang 3

3

- Bộ chữ cái la tinh: gồm 26 chữ cái tiếng anh

+ Chữ in hoa A -> Z + Chữ in thường a -> z

- Bộ chữ số: 0 -> 9

- Các dấu: phép toán số học +, -, *, / và các kí hiệu khác @, ^, %…

2 Các từ khoá ( Key words ) và các dấu kép

Từ bằng tiếng anh được TP dùng với một ý nghĩa xác định và gọi là từ khoá

- Ví dụ: Program, Begin, end, …

+ Kiểu đơn giản ( Vô hướng )

- Đơn giản chuẩn: Số nguyên, thực, logic, ký tự

- Tự định nghĩa: Liệt kê, đoạn con

+ Có cấu trúc: Xâu, mảng, tập hợp, bản ghi, file

+ Loại dữ liệu trừu tượng: con trỏ

4 Hằng:

- Hằng là một giá trị cụ thể không thay đổi

- Hằng số: 12, 45

- Hằng ký tự: là dãy kí hiệu được bắt đầu và kết thúc bằng dấu nháy đơn

( ‘ ’ ) Ví dụ ‘ LOP TIN HOC ’, …

- Hằng logic: True, False ( không phân biệt chữ hoa hay chữ thường)

5 Xử lý và biểu diễn TT trong MT

a.Xử lý TT

Chương trình TT kết quả

Trang 4

4

b.Các hệ đếm

- Các hệ đếm thường dùng trong máy tính

+ Hệ thập phân :dùng các chữ số từ 0- 9 để biểu diễn

Hệ nhị phân thường được dùng nhiều nhất trong máy tính vì nó thuận tiện cho việc

mã hoá và lưu trữ TT trong máy tính

c Cách mã hoá và biểu diễn TT trong MT

- Người ta dùng bảng mã ASCII (American standard code for information interchange)

6 Khái niệm Biến

- Là 1 ô nhớ hay 1 vùng nhớ lưu trữ có thể thay đổi được

- Mỗi biến thuộc 1 kiểu dữ liệu xác định trước và phải được khai báo ngay đầu chương trình bằng từ khóa Var

Ví dụ Var < tên biến >: < Kiểu dữ liệu>

Var a,b,c : Real;

n,i,j: Integer;

7 Các phép toán:

+ So sánh: = , <> , >= , <= ,

+ Số học: + , - , *, /

+ Phép toán ghép xâu: + = ‘ Ha noi ’+ ‘ Viet Nam ’;

+ Phép toán logic: not, and, or, xor

- Ví dụ cụ thể

Trang 5

5

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE FALSE

TRUE FALSE TRUE

FALSE FALSE FALSE

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

Lệnh này thực hiện việc tính toán giá trị biểu thức ở vế phải rồi ghi kết quả vào biến, nếu giá trị của biểu thức không cùng kiểu với biến thì sẽ bao lỗi

2 Nhập dữ liệu vào biến:

- d1: Read( biến1, biến2,…,biến n);

- d2: Read ln(biến1, biến2,…,biến n);

Trang 6

II Các kiểu dữ liệu đơn giản

1 Khái niệm chung

- Dữ liệu ( Data ) là tất cả những gì mà máy tính xử lý

Theo Nikláu Wirth:

Chương trình = Thuật toán + Cấu trúc dữ liệu

- Một kiểu dữ liệu ( Data type ) là một sự quy định về hình dạng, cấu trúc và giá trị của dữ liệu cũng như cách biểu diễn và cách xử lý dữ liệu

- Dữ liệu trong Pascal chia làm hai loại chính

+ Kiểu đơn giản ( Simple type) + Kiểu có cấu trúc ( Structure type )

2 Các kiểu dữ liệu đơn giản

2.1 Kiểu số nguyên ( Integer )

- Kiểu số nguyên thuộc Z được định nghĩa với các từ khoá sau:

- Khai báo: Var < Tên biến>: Integer;

Var a, b: Integer;

- Mỗi biến kiếu số nguyên được lưu trữ = hai byte và có thể nhận được các giá trị trong khoảng:

Trang 7

quả là số thực

a mod b

+ Mod lấy phần dư của phép chia a cho b

a div b

+ Div lấy phần nguyên của phép chia a cho b

Ví dụ: nhạp vào một số nguyên gồm 4 số: sau đó tính tổng các chữ số

* Chú ý: Pascal đã chuẩn bị sẵn 1 số kiểu tương thích với kiểu số nguyên

6 Single 1.5E-45 3.4E+38

7 Double 5.0E-324 1.7 E+308

+ Ví dụ:

Nhập vào kích thước của hình chữ nhật sau đó đó tính chu vi, diện tích

2.2 Kiểu số thực ( Real)

- Kiểu số thực R được định nghĩa với từ khóa REAl

- Khai báo: Var < Tên biến>: Real;

Trang 8

2.3 Kiểu logic( Boolean )

- Khai báo: Var < Tên biến>: Boolean;

Var Ok:Boolean;

- Kiểu Boolean nhận 2 giá trị đúng ( True ), sai ( False)

- Các phép toán: and, or, not

- Các thao tác:

Lênh gán: Ok := true;

Ok:= n = 5;

Ok:= n mod 2 = 0;

- Không có lệnh đọc vào biến logic

- Viết ra được Write, Writeln;

+ Đọc vào Read, Readln;

+ Viết ra: Write, Writeln;

Trang 9

9

I Khái niệm bài toán

- Khái niệm: Trong phạm vi Tin học, ta có thể quan niệm bài toán là việc nào đó ta

muốn máy tính thực hiện

- Ví dụ: Viết một dòng chữ trông báo ra màn hình, Giải phương trình bậc hai, quản

lý cãn bộ trong một cơ quan…

* Khí dùng máy tính giải bài toán, ta cần quan tâm tới hai yếu tố ( Gọi là bước xác

định bài toán )

+ Đưa vào máy thông tin gì ( Input)

+ Lấy ra thông tin gì ( Output)

Ví dụ: Xác định bài toán

1 Bài toán kiểm tra tính nguyên tố của một số

Input: số nguyên dương n ( n <>1)

Output: trả lời n có phải là nguyên tố hay không

2.Bài toán xếp loại học sinh

II Khái niệm thuật toán ( Algorithm )

- Khái niệm về thuật toán: Thuật toán để giải một bài toán là một dãy hữu hạn các

thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ Input của bài toán này, ta nhận được Output cần tìm

- Bước 3 : Nếu m > n thì thay m bằng m – n rồi quay lại bước 2

- Bước 4: Thay n băng n - m rồi quay lại bước 2

- Đưa ra kết quả UCLN Kết thúc

- Trên đây là trình bày thuật toán bằng phương pháp liệt kê, ngoài ra còn trình bày thuật toán bằng phương pháp sơ đồ khối

* Trong sơ đồ khối, người ta dùng một số biểu tượng thể hiện các thao tác:

Trang 10

+ nếu b = 0 thì PT vô số nghiệm -> b4

+ Nếu b <> 0 thì vô nghiệm -> b4

- b3: Nếu a <> 0 thì x = - b/a

- b4: Dừng

Bài tập: Hãy xác định bài toán sau đó mô tả thuật toán giải các bài tập sau bằng

phương pháp liệt kê và sơ đầ khối:

1 Cho N và dãy số a1, a2, …an hãy tìm giá trị nhỏ nhất ( Min ) của dãy đó

Trang 12

12

- If đủ: Máy kiểm tra Điều kiện nếu cho kết quả là đúng ( True ) thì thực hiện < lệnh1 > sau then, ngược lại sẽ bỏ qua lệnh 1 thực hiện lệnh 2 sau else

Chú ý: Sau các từ khóa THEN, ELSE chỉ có một câu lệnh được thực hiện Khi cần có

nhiều hơn một câu lệnh saumỗi từ khóa đó ta cần sử dụng câu lệnh ghép

* Vẽ sơ đồ khối

Câu lệnh If đủ:

Ví dụ: Giải phương trình bậc nhất: ax + b = 0

* Xác định bài toán:

- Input: a,b ( a<> 0)

- Output: x sao cho

ax + b = 0

* Giải thuật

- b1: nhập a,b

- b2: Nếu a= b thì

+ nếu b = 0 thì PT vô số nghiệm -> b4

+ Nếu b <> 0 thì vô nghiệm -> b4

ĐK

Lệnh 2

True False

Lệnh 1

Trang 13

Else Writeln(‘ PT co vo so nghiem’);

3 Câu lênh lựa chọn case … of

* Cú pháp:

Case < biến > of

< Tap hang 1>: < Lenh 1>;

< Tap hang 2>: < Lenh 2>;

< Tap hang 3>: < Lenh 3>;

… …

< Tap hang n>: < Lenh n>

Else < Tap hang n+1>

Trang 15

15

1 Bài toán

Lãi xuất gửi ngân hàng không kỳ hạn là k% Một người gửi số tiền ban đầu là

a tính số tiền có được sau t tháng

For biến := < giá trị cuối> to < giá trị đầu> do < lệnh>;

- Biến phải là kiểu dữ liệu đếm được ( Integer, char )

- Giá trị phải cùng kiểu với biến

* Hoạt động

- For tiến: Đầu tiên biến nhận giá trị đầu sau đó tiến hành so sánh nó với giá trị cuối, nếu nhỏ hơn tiến hành thực hiện lệnh, song biến tự động tăng lên 1, sau đó quay về vòng lặp

- Quá trình lặp đi lặp lại cho đến khi vượt qua giá trị cuối thì dừng

* Vẽ sơ đồ khối

* For lùi: cách thực hiện khác điểm sau

- Bắt đầu nhận giá trị cuối trước

- Sau mỗi lần lặp giảm đi 1 đơn vị

* Chú ý: trong câu lệnh For không được tự tiện thay đổi biến điều khiển, bởi vì biến

điều khiển tự động tăng trong cấu trúc lặp ( biến := biến + 1, inc(biến) )

Trang 16

- Lãi xuất hàng tháng gửi tiết kiệm không kỳ hạn là 1 % Một người gửi vào số tiên là

a Sau bao nhiêu tháng người đó có số tiền không nhỏ hơn b

- Điều kiện là 1 biểu thức logic ( true – false )

- Lệnh có thể là 1 hoặc nhiều lệnh ( Begin … end)

- Hoạt động: Máy kiểm tra ĐK, nếu ĐK cho giá trị True thì thực hiện lệnh sau do, ngược lại thoát khỏi vòng lặp

Trang 17

* Chú ý 2: Vòng lặp While … do áp dụng cho bài toán mà không biết số vòng lặp là

bao nhiêu lần mà chỉ biết ĐK để tiến hành lặp

III.Câu lệnh lặp với điều kiện sau repeat … until

- Lệnh có thể là một hoặc nhiều câu lênh ( không cần đặt trong cặp begin … end )

- Hoạt động: Đầu tiên thực hiện lệnh, sau đó kiểm tra ĐK, nếu ĐK đúng thì thoát ra, nếu sai thì quay lại vòng lặp làm tiếp

Ví dụ 1: Tính tổng

S = 1 + 1/2 + 1/3 + … + 1/n

Giải

Program tong;

Trang 18

* Chú ý 1 : Trong vòng lặp Repeat phải tồn tại 1 lệnh biến ĐK sai thành ĐK đúng để

thoát khỏi vòng lặp, nếu không thì sẽ lặp vô hạn lần

Type < Kiểu mảng > = Array[ tập chỉ số ] of < kiểu phần tử>;

Var < Biến mảng> : < Kiểu mảng>;

< Biến mảng > : Array [ Tập chỉ số ] of < kiểu phần tử>;

* Trong đó:

- Type, Var, Array, of là từ khoá

- Kiểu mảng, biểu mảng ta tự đặt

Trang 19

- Lệnh gán cho hai mảng cùng kiểu m1 := m2;

- Không có lệnh đọc và viết cho 1 biến mảng nói chung

- Chỉ có thể thao tác đến từng phần tử của mảng phụ thuộc vào kiểu dữ liệu của nó

- Để truy cập đến phần tử thứ i của mảng a là a[i]

Read(a[i]); b[1] := a[1]; Write(‘ b[1]’);

3 Các thuật toán cơ bản

a Thuật toán tính tổng thoả mãn tính chất

Trang 20

If < a[i] thoả mãn tính chất > then Đếm := Đếm+ 1;

+ Tính trung bình cộng thoả mãn tính chất nào đó:

Thì phải tìm cách biểu diễn = Biểu thức logic

c Thuật toán tìm max, min

Trang 21

- Nhập vào số n sau đó nhập vào một dãy số nguyên

- Tìm số lớn nhất, nhỏ nhất, và cho biết vị trí của nó

2 Các thuật toán trên mảng 2 chiều:

2.1 Thao tác đọc file hai chiều từ:

Trang 22

8 3 8 6

5 4 2 1

6 2 0 3

Hãy xác định các phần tử Cực tiểu, cực đại, Yên ngựa

- Hãy sắp xếp lại các phần tử của ma trận để sao cho các phần tử nằm trên hàng

tăng dần và trên cột giảm dần( cột tăng và hàng tăng)

Ví dụ:

Trang 23

6 0 2

4 1 3

5 4 3

2 1 0

Trang 24

{ - Phan tu Yen ngua -}

Function ngua( i, j :integer):boolean;

Var ok1, ok2: boolean;

Trang 25

Procedure maxdong( var a:mang);

Var t, max, k, k1: integer;

Trang 26

if ngua(i,j) then Writeln('PT Yen Ngua ', a[i,j]);

if cuctieu(i,j) then Writeln('PT cuctieu ', a[i,j]);

Procedure maxcot( var a:mang);

Var t, max, k, k1: integer;

Trang 27

Yêu cầu sắp xếp thường xuyên xuất hiện trong các ứng dụng tin học, với những mục đích khác nhau; sắp xếp dữ liệu để lưu trữ trong máy khi tìm khiếm cho được thuạn lợi, sắp xếp các kết quả xử lý để in trên một bảng biểu

I Một số phương pháp sắp xếp đơn giản

1.1 Sắp xếp chọn: ( Selection Sort )

* Thuật toán:

- Bắt đầu từ phần tử đầu tiên của dãy so sánh với các phần tử còn lại nếu thoả mãn điều kiện so sánh thì hoán vị hai phần tử đó cho nhau cứ tiếp tục như vậy cho tới phần tử cuối cùng

- Khi sắp xếp mảng a[1]…a[n] thì ta có thể dùng hai vòng lặp lồng nhau như sau;

For i := 1 to n – 1 do

For j := i to n do

If a[i] < a[j] then

Hoanvi(a[i],a[j]);

{ - Chương trình hoán vị hai số -}

Procedure hoanvi(Var x,y:integer);

Trang 28

- Duyệt qua toàn bộ dãy nhiều lần giống như phương pháp chọn:

- Khi sắp xếp mảng a[1]…a[n] thì ta có thể dùng hai vòng lặp lồng nhau như sau:

+ Chọn i giảm từ n cho tới 1

+ Chọn j giảm từ 2 cho tới i

if a[j-1] > a[j] then

Trang 29

29

- So sánh với các phần tử trước nó, nếu a[ i-1] > x thì đẩy a[i-1] sang vị trí a[i], so sánh tiếp a[ i-1] nếu vẫn còn lớn hơn x thì đẩy a[i-1] sang vị trí của a[i-1], ngược lại thì chèn vào vị trí a[i-1]

- Thực hiện các thao tác trên từ 2 cho tới n lần

II Sắp xếp phân đoạn – Sắp xếp nhanh

( Partion Sort – Quick Sort )

* Thuật toán:

- Chọn 1 phần tử thuộc dãy làm khoá cơ bản

- SS các phần tử của dãy với khoá cơ bản sao cho các PT có giá trị < khoá cơ bản thì sếp lên trước và ngược lại cho xuống đằng sau

- Như vậy khoá cơ bản được đưa vào đúng vỉtí trong quá trình lặp tới hết dãy

- Khoá cơ bản chia dãy làm hai phần: Quá trình miêu tả ở trên được thực hiện ở hai phần đó

- Cuối cùng quá trình kết thúc khi không còn được thực hiện thuật toán trên đó

Trang 30

30

- Nếu a[i] > 42 so sánh a[j] với 42

+ Nếu a[j] > 42 giảm j := j – 1;

+ Nếu a[j] < 42 Hoán vị a[i] và a[j] lặp lại quá trình

- Khi i >= j thì khoá cơ bản đặt đúng chỗ , hoán vị KCB với a[j]

Procedure Qs(var a:mang; d,c:integer);

{ a: Tên dãy khoá cần sắp xếp

d: biến chỉ biến đầu truy nhập

c: biến chỉ biến cuối truy nhập

Dùng hai biến i,j thực hiện quá trình miêu tả ở trên

b: biến kiểu Boolean, có một khoá đệm a[n+1] với mọi i thì a[i] <= a[i+1] key: biến nhận giá trị khoá cơ bản }

Trang 31

A Hướng dẫn giải thuật:

- Chia dãy sắp xếp thành hai phần, lấy giá trị ở giữa X làm chuẩn để so sánh

- Đi tìm phần tử A ở dãy trên có giá trị lớn hơn X

- Đi tìm phần tử B ở dãy dưới có giá trị nhỏ hơn X

* Lấy giá trị của thành phần thứ ( L+ R ) div 2 gán vào biến X

* Chi i ban đầu là L

* Cho j ban đầu là R

* Lặp lại

* Chừng nào còn A[i] < X thì tăng i

* Chừng nào còn A[j] > X thì giảm j

* Sắp xếp đoạn từ A[L] đến A[j]

* Sắp xếp đoạn từ A[i] đến A[R]

B Chương trình cài đặt

Procedure Sort(L,R: integer);

Var i,j: Integer;

Tg,X: integer;

Begin

Trang 32

While A[i] < Tg then inc(i);

While A[j] > Tg then dec(j);

Kiểu xâu ký tự là một kiểu dữ liệu đã được định nghĩa sẵn trong Pascal

nó gồm 1 dãy liên tiếp các ký tự có độ dài không vượt quá 255 ký tự

2 Khai báo

Type < Kiểu xâu > = String[n];

Var < Biến xâu > : < Kiểu xâu >;

Trang 33

33

Ví dụ:

Type xau = String[50];

Var hoten : xau;

3 Truy nhập vào môt phần tử của xâu:

- Ta có thể truy nhập vào từng ký tự của một xâu với tên biến và chỉ số đặt trong dấu ngoặc vuông [] ( giống như trong truy xuất vào 1 phần tử của mảng )

Chỉ số này chạy từ 1 tới độ dài của xâu ký tự

4 Các thao tác với xâu

Ngày đăng: 17/07/2018, 22:43

TỪ KHÓA LIÊN QUAN

w