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

Tim hieu PASCAL

119 471 1

Đ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 119
Dung lượng 8,75 MB

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

Nội dung

Phần này có nhiệm vụ mô tả các đối tượng của bài toán, mô tả dữ liệu cho chương trình biết trước mà xử lí.Phần khai báo đầy đủ có 7 phần theo thứ tự quy định không bắt buộc: b.. Một chươ

Trang 5

Pascal là tên của một trong các ngôn ngữ lập trình cấp cao thông dụng Ngôn ngữ lập trình Pascal được giáo

sư Niklaus Wirth ở trường Đại học Kỹ thuật Zurich (Thụy sĩ) thiết kế và công bố vào năm 1970 Niklaus Wirth đặt tên

cho ngôn ngữ này là Pascal để tưởng nhớ đến nhà Toán học và Triết học Pháp ở thế kỷ 17 là Blaise Pascal, người

đã phát minh ra một máy tính cơ khí đơn giản đầu tiên của con người

Ngôn ngữ Pascal được dùng hiện nay có nhiều

điểm khác biệt với chuẩn Pascal nguyên thủy của Giáo sư Wirth Tùy theo quốc gia hoặc công ty đã phát triển cho ra đời các chương trình biên dịch ngôn ngữ Pascal

Trang 11

PROGRAM <Tên chương trình>;

[Phần khai báo]

BEGIN

<Các câu lệnh>

END

Trang 12

Bắt đầu bằng từ khoá PROGRAM và kèm theo <tên chương trình>, kết thúc bằng dấu “;”

có thể có hoặc không

Ví dụ: PROGRAM baitap;

a.Phần tiêu đề

Trang 13

Phần này có nhiệm vụ mô tả các đối tượng của bài toán, mô tả dữ liệu cho chương trình biết trước mà xử lí.

Phần khai báo đầy đủ có 7 phần theo thứ tự quy định (không bắt buộc):

b Phần khai báo

Trang 14

b Phần khai báo

USES Khai báo sử dụng thư viện. USES CRT;

LABEL Khai báo nhãn cho đoạn chương

Pi=3.14;

Max=100; TYPE Khai báo kiểu dữ liệu mới do người

Trang 16

Mọi ngôn ngữ lập trình đều được xây dựng từ một bộ ký tự nào đó Các ký tự được nhóm lại theo nhiều cách khác nhau để tạo nên các từ Các từ lại được liên kết với nhau theo một qui tắc nào đó để tạo nên các câu lệnh Một chương trình bao gồm nhiều câu lệnh và thể hiện một thuật toán để giải một bài toán nào đó Ngôn ngữ PASCAL được xây dựng trên bộ ký tự sau :

26 chữ cái hoa : A B C Z

26 chữ cái thường : a b c z

10 chữ số : 0 1 2 9 Các ký hiệu toán học : + - * / = ( )

Ký tự gạch nối : _ Các ký tự khác : , : ; [ ] {} ! \ & % # $

Dấu cách (space) dùng để tách các từ Ví dụ chữ VIET NAM có 8

ký tự, còn VIETNAM chỉ có 7 ký tự.

Trang 17

Từ khoá là những từ được sử dụng để viết các toán tử và các câu lệnh Bảng dưới đây liệt kê các từ khoá của TURBO PASCAL:

Chú ý : Không được dùng các từ khoá để đặt tên cho các hằng, biến, mảng, hàm

Absolute Constructor File Inline On Self Unit And Continue For Interface Operator Set Util Array Destructor Function Lable Packed Shl Uses

Break Downto Implementation Not Record Then With Case Else In Object Reintroduce To Xor Const End Inherited Of Repeat Type

Trang 18

Tên là một khái niệm rất quan trọng, nó dùng để xác định các đại lượng khác nhau trong một chương trình Chúng ta có tên hằng, tên biến, tên mảng, tên hàm, tên con trỏ, tên tệp, tên cấu trúc, tên nhãn,

Tên được đặt theo qui tắc sau : Tên là một dãy các ký tự bao gồm chữ cái, số và gạch nối Ký tự đầu tiên của tên phải là chữ hoặc gạch nối Tên không được trùng với khoá.

VÍ DỤ:

CHÚ Ý: Trong PASCAL không phân biệt tên chữ hoa chữ thường

VD: Đặt tên lop10a cũng giống như là LOP10A.

Lop10a Tin_hoc _to3_

10a _to3@_

F(x) Lop 10a

Trang 19

Trong PASCAL sử dụng các kiểu dữ liệu có sẵn sau:

Trang 24

HÀM Ý NGHĨA VÍ DỤ

ABS(x) Cho trị tuyệt đối của x a=-5  ABS(a)=5

SQR(x) Cho giá trị bình phương của x a=6  SQR(a)=36

SQRT(x) Cho giá trị căn bậc hai của x (x>=0) a=16 SQRT(a)=4

ROUND(x) Cho giá trị một số nguyên do làm tròn x a=5.6  ROUND(a)=6

TRUNC(x) Cho giá trị phần nguyên x a=5.6  TRUNC(a)=5

PRED(n) Cho giá trị n-1, số nguyên trước n i=10  PRED(i)=9

SUCC(n) Cho giá trị n+1, số nguyên sau n i=10  SUCC(i)=11

ODD(n) Cho giá trị TRUE nếu n lẻ, FALSE nếu

Trang 25

Mỗi giá trị kiểu char chiếm 1 byte (8 bit) và biểu diễn được 1 kí tự thông qua bảng mã ASCII (0 đến 255) Ví dụ:

Trang 27

CÁC PHÉP TOÁN:

- Phép so sánh: > >= < <= = <>

HÀM CHUẨN KIỂU CHAR:

- Hàm ORD(C): Cho số là mã ASCII của kí tự C

Ví dụ: ORD(‘A’)=65; ORD(‘1’)= 49

- Hàm CHR(N): Cho kí tự ASCII tương ứng với số N

Ví dụ: CHR(65)=‘A’; CHR(49)=‘1’

Trang 28

Kiểu LOGIC Kích thước

Trang 29

CÁC PHÉP TOÁN:

- Phép so sánh: AND, OR, NOT, XOR

TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE

Trang 30

a Hằng (Constant)

Định nghĩa: Hằng là một đại lượng có giá trị không

đổi trong suốt quá trình thực hiện chương trình

KT=true; (* KT là hằng kiểu logic *)

Chú ý: Kiểu của hằng do kiểu giá trị quyết định.

Trang 31

b Biến (Variable)

Định nghĩa: Biến là một đại lượng có giá trị có thể

thay đổi trong suốt quá trình thực hiện chương trình

Khai báo biến:

Trang 32

c Biểu thức (Expression)

Định nghĩa: Biểu thức là tập hợp các toán hạng được liên

kết bởi các toán tử.

• Toán hạng gồm các hằng, biến và hàm.

• Toán tử của phép số học và logic.

• Giá trị biểu thức có thể là kiểu số, chữ hoặc logic

Ví dụ:

S:=Pi*R*R; { S nhận giá trị thực của biểu thức }

Độ ưu tiên:

1 Dấu ( )

2 Dấu dương (+), âm (-), phép phủ định (not)

3 Phép nhân (*), chia (/), lấy phần nguyên

(div), phần dư (mod), phép và (and)

4 Phép cộng (+), trừ (-), phép hoặc (or)

5 Các phép so sánh

Trang 33

a Hình thức thể hiện:

 Câu lệnh trong chương trình được phân cách nhau bằng dấu chấm phẩy (;)

 Một câu lệnh có thể viết trên nhiều dòng.

 Nhiều lệnh có thể viết trên một dòng.

 Không phân biệt chữ hoa hay chữ thường.

Trang 34

Câu lệnh phức là câu lệnh tập hợp nhiều câu lệnh

khác được kết hợp bởi các từ khoá BEGIN và END

Trang 35

Khái niệm: Câu chú thích dùng để giải thích một vấn đề nào đó trong chương trình, nó không được thực hiện khi chạy chương trình.

Cách viết: Chú thích được đặt trong cặp dấu {} hoặc (* *)

Ví dụ: PROGRAM BT1; { dòng tiêu đề }

USES CRT; (* Khai báo sử dụng thư viện *)

Trang 36

Cú pháp:

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

Chú ý: Biến được gán và biểu thức phải cùng kiểu dữ liệu

Ví dụ: Sau khi đã có khai báo:

VAR a , b : byte;

c : real;

Ta có thể thực hiện các phép gán sau:

a:=5; b:=7; c:=a*b;

Trang 40

a Thủ tục in dữ liệu ra màn hình:

CHỨC NĂNG:

Lệnh sẽ in các mục m1, m2, ra màn hình tại vị trí con trỏ đang đứng.

WRITELN(m1, m2, ); Sau khi in xong sẽ đưa con

trỏ sang một dòng tiếp theo

WRITELN; Để đưa con trỏ sang dòng tiếp theo.

Trang 42

item: là một biến, hằng hoặc biểu thức có giá trị số nguyên.

n: số chữ số biểu diễn số nguyên, nếu số chữ số của item<n

thì máy sẽ thêm các dấu trống trước số.

Kết quả in ra màn hình:

123 556677

Trang 43

item: là một biến, hằng hoặc biểu thức có giá trị số thực.

n: số chữ số biểu diễn số nguyên, nếu số chữ số của item<n

thì máy sẽ thêm các dấu trống trước số.

m: số chữ số phần thập phân, nếu phần thập phân của số<m

Trang 44

Kết quả in ra màn hình:

1.2345 566.7700

Trang 46

b Thủ tục nhập dữ liệu:

CHỨC NĂNG:

kiểu giá trị nhập vào phải đúng với kiểu dữ liệu đã khai báo cho biến

READ(V1, V2, ); và READLN(V1, V2, ); nhập nhiều

giá trị được phân cách nhau bởi khoảng trống Lệnh

READLN(V1, V2, ) sau khi nhập dữ liệu xong sẽ đưa

con trỏ xuống dòng mới

READLN; đợi cho đến khi ấn phím Enter Được sử dụng

cuối chương trình để dừng lại xem các kết quả hiển thị

chỉ nên nhập 1 biến

Trang 49

VÍ DỤ:

Viết chương trình tính diện tích, chu vi hình tròn (làm tròn đến chữ số thập phân thứ 3), bán kính R nhập từ bàn phím.

Trang 50

END.

Trang 51

B1: Kiểm tra <biểu thức Logic>.

B2: Nếu Đúng thì thực hiện <câu lệnh>.

B3: Kết thúc lệnh.

BT LOGIC

Câu lệnh

Đ

S

Trang 54

a Câu lệnh IF

VÍ DỤ: Giải phương trình bậc 2: ax+bx+c=0

Input: Giá trị 3 số a, b, c (nhập từ bàn phím) Out: In ra nghiệm của phương trình.

Trang 55

writeln ('x2=',x2:10:10);

end else if d=0 then begin

x1 := -b/2/a ; writeln ('phuong trinh co nghiem kep x1=x2=', x1) ; end

else writeln ('phuong trinh vo nghiem') ; readln ;

END.

Trang 56

b Câu lệnh chọn CASE OF

Câu lệnh IF ở trên chỉ rẽ vào một trong hai nhánh tương ứng với giá trị của biểu thức logic

Còn lệnh CASE (rẽ nhánh theo giá trị) cho phép

lựa chọn để thực hiện một trong nhiều công việc tuỳ theo giá trị của biểu thức.

Trang 57

b Câu lệnh chọn CASE OF

CÚ PHÁP:

Trang 58

b Câu lệnh chọn CASE OF

THỰC HIỆN LỆNH:

B1: Tính giá trị <Biểu thức> rồi đem so sánh với <giá trị i>

• Nếu Bằng thì thực hiện <câu lệnh i> rồi chuyển đến lệnh sau END;

• Ngược lại Sai thì kiểm tra tiếp <giá trị i+1>

B2: Nếu đến <giá trị n> vẫn sai thì thực hiện <câu lệnh n+1> (nếu có)

B3: Kết thúc lệnh.

Trang 59

b Câu lệnh chọn CASE OF

VÍ DỤ:

Nhập vào một kí tự và thông báo đó là chữ cái hay chữ số hay kí hiệu.

Trang 60

‘0’ ’9’: writeln (KT,’ la mot chu so’);

‘a’ ’z’: writeln (KT,’ la chu cai in thuong’);

‘A’ ’Z’: writeln (KT,’ la chu cai in hoa’); ELSE

writeln (KT,’ la ki hieu’);

END;

readln;

END

Trang 61

Trường hợp để giải quyết bài toá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ó 3 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 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 phải có điểm dừng, cho dù là loại xác định hay không xác định.

Trang 63

a Dạng tiến

THỰC HIỆN LỆNH:

B1: <Biến> được gán giá trị của <Bt1>

B2: Nếu giá trị <Biến> > <Bt2> thì chuyển đến B5 B3: Thực hiện <câu lệnh>.

B4: <Biến> được tăng lên một giá trị Biến:=Biến + 1

chuyển đến B2

B5: Kết thúc lệnh.

Trang 64

a Dạng tiến

SƠ ĐỒ KHỐI:

Biến := <Bt1>

Biến := Biến +1 Câu lệnh

Biến<=<Bt2>?

Đ

S

Trang 66

b Dạng lùi

THỰC HIỆN LỆNH:

B1: <Biến> được gán giá trị của <Bt1>

B2: Nếu giá trị <Biến> < <Bt2> thì chuyển đến B5 B3: Thực hiện <câu lệnh>.

B4: Biến:=Biến - 1 chuyển đến B2.

B5: Kết thúc lệnh.

Trang 67

b Dạng lùi

SƠ ĐỒ KHỐI:

Biến := <Bt1>

Biến := Biến +1 Câu lệnh

Biến>=<Bt2>?

Đ

S

Trang 68

Chú ý:

 Không được thay đổi giá trị của <Biến> bằng một lệnh bất kì

trong vòng lặp FOR Điều này làm cho vòng lặp không có lối thoát

và dẫn đến treo máy.

 Kiểu của <Biến>, <Bt1>, <Bt2> phải là kiểu vô hướng đếm đư

ợc (như kiểu nguyên, logic, kí tự, liệt kê).

 Các <Bt1>, <Bt2> đượ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 giảm của

<Biến> để gán giá trị của nó cho bất kì biến nào hoặc thực hiện

việc gì đó có tính chất tăng hoặc giảm.

Trang 69

VÍ DỤ: Tính tổng S của N số tự nhiên đầu tiên.

S=1+2+3+ +N

Trang 71

VÍ DỤ: Hoặc ta có thể làm như sau:

Trang 72

CÚ PHÁP:

WHILE <Biểu thức LOGIC> DO

<Câu lệnh>;

THỰC HIỆN LỆNH:

B1: Kiểm tra <Biểu thức LOGIC>

B2: Nếu Đúng thì thực hiện <Câu lệnh> rồi chuyển đến B1.

B3: Ngược lại Sai thì kết thúc lệnh, chuyển đến lệnh sau

WHILE DO

Trang 74

VÍ DỤ: Với tiền gửi ban đầu là a, lãi suất hàng

tháng là k Tính số tháng gửi tiết kiệm để được

số tiền b Biết rằng tiền lãi hàng tháng sẽ được cộng vào vốn làm vốn tháng sau

Trang 76

VÍ DỤ: Tìm ước chung lớn nhất của hai số nguyên

dương M và N.

Trang 77

VÍ DỤ: PROGRAM UCLN ;

VAR m , n : integer;

BEGIN write ( 'nhap 2 so nguyen duong m va n: ') ; readln ( m , n ) ;

write ( ‘UCLN (', m , ',‘ , n , ')= ') ; WHILE m <> n DO

IF m > n THEN m := m-n ELSE n:=n-m ;

write ( m ) ; readln ;

END.

Trang 78

B2: Kiểm tra <Biểu thức LOGIC>

B3: Nếu Sai thì chuyển đến B1

B4: Kết thúc lệnh, chuyển lệnh sau REPEAT UNTIL

 Các câu lệnh được thực hiện ít nhất một lần.

Trang 80

write (‘ nhap vao mot so khac 0: ‘); readln(a);

if a=0 then writeln (‘Ban phai nhap lai’) else writeln (‘so duoc chap nhan’);

UNTIL a<>0;

readln;

END.

Trang 82

MẢNG

Trang 83

a Khái niệm:

• Mảng (Array) là một kiểu dữ liệu có cấu trúc bào 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ố.

• Mảng dùng để lưu trữ một dãy số liệu có cùng một tính chất nào đó.

Trang 84

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

Trang 85

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

Ngoài ra ta còn có thể khai báo trực tiếp mảng như sau:

VAR

Tên_mảng : ARRAY [ chỉ_số ] OF kiểu_phần_tử ;

Trang 86

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

Ví dụ:

TYPE

MANGCHAR = ARRAY [1 10] OF char;

THU = (chunhat, hai, ba, tu, nam, sau, bay); TIEN = ARRAY [THU] OF integer;

VAR

A , B : MANGCHAR;

C : TIEN;

D : ARRAY [-1 100] OF integer;

Trang 89

write('so thu ',i,' = ') ; readln(a[i]) ;

IF a[i]<=0 THEN writeln ('ban phai nhap so nguyen duong!!!') ; UNTIL a[i]>0 ;

Trang 90

VÍ DỤ:

Nhập n (n<100) số nguyên dương từ bàn phím rồi in

ra màn hình các số đó theo thứ tự không giảm

INPUT: Số nguyên dương n và dãy A gồm n số nguyên

dương

OUTPUT : Dãy A đã được sắp xếp không giảm.

Trang 91

writeln (' day so da sap xep la: ') ;

FOR i:=1 TO n DO write (a[i]:4) ;

readln ;

END

Trang 92

VÍ DỤ:

Tìm giá trị lớn nhất của một dãy số nguyên.

INPUT: Số nguyên dương N và dãy A gồm n số nguyên

dương

OUTPUT : Giá trị lớn nhất Max của dãy số.

Trang 93

IF a[i] > max THEN max := a[i] ;

writeln ('So lon nhat trong day la ',max) ; readln ;

END

Trang 95

d Mảng nhiều chiều:

CHÚ Ý:

 Mảng hai chiều còn được gọi là ma trận

 Mỗi phần tử mảng được truy nhập như một biến độc lập, thông qua tên gọi gồm tên mảng và chỉ số của phần tử đó

TÊN_MẢNG [ Chỉ_số_dòng , Chỉ_số_cột ] Hoặc

TÊN_MẢNG [ Chỉ_số_dòng ] [ Chỉ _số_cột ]

 Trong mảng hai chều chỉ số sau truy cập nhanh hơn chỉ số trước

Trang 96

d Mảng nhiều chiều:

(m,n<100) Tính và in ra màn hình tổng của ma

trận đó.

Trang 99

XÂU KÍ TỰ

Trang 100

có thể thay đổi còn số phần tử của kiểu mảng luôn cố định.

Trang 101

2 KHAI BÁO KIỂU XÂU:

VAR

Tên_biến : STRING [ n ] ;

Trong đó: n là số kí tự tối đa có thể có của xâu Chiều dài tối đa của một xâu là 255 Nếu trong phần khai báo không ghi [ n ] thì xâu có chiều dài mặc định là 255

Trang 102

2 KHAI BÁO KIỂU XÂU:

CHÚ Ý:

Khi khai báo thường chúng ta cho số lượng kí tự lớn nhất, nhưng trong thực hiện chương trình thường nhập chuỗi ngắn hơn

Máy dành n+1 byte cho biến để lưu trữ n kí tự (nếu

có khai báo [n]) và 256 byte cho biến (nếu không khai báo [n]);

Trang 103

 Xâu được xem như mảng một chiều với các phần tử

là kiểu char Mỗi phần tử xâu được truy nhập như một biến độc lập, thông qua tên gọi gồm tên xâu và chỉ số của phần tử đó

TÊN_CHUỖI [chỉ_số]

Trang 104

4 CÁC PHÉP TOÁN TRÊN XÂU KÍ TỰ:

a Phép gán:

Biến:=biểu_thức;

Đại lượng nằm bên phải của lệnh phải được đặt trong cặp 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ụ:

NAM := ‘Ky’ + ‘Suu’;

Trang 105

4 CÁC PHÉP TOÁN TRÊN XÂU KÍ TỰ:

Trang 106

4 CÁC PHÉP TOÁN TRÊN XÂU KÍ TỰ:

c Các phép toán so sánh:

Khi so sánh hai xâu kí tự, các kí tự của hai xâu được so sánh từng cặp một từ trái sang phải theo giá trị của bảng mã ASCII

VÍ DỤ:

‘TIN HOC’ = ‘TIN HOC’

‘ABC’ > ‘AB’

‘file’>’FILE’

Trang 107

DELETE(s,2,4);  lúc này s=‘AFG’

INSERT(s1,s,3);  lúc này s=‘ABHICDEFG’

Trang 110

5.CÁC THỦ TỤC VÀ HÀM XỬ LÍ XÂU KÍ TỰ

B CÁC HÀM

c COPY(st, p, n)

Cho kết quả là một xâu con gồm n kí tự của xâu st kể từ

kí tự thứ p tính từ trái sang phải.

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

Trang 111

VÍ DỤ: Viết chương trình nhập từ bàn phím một xâu kí tự và in ra màn hình xâu kí tự ngược tương ứng.

Trang 114

CÁC BÀI TẬP

Trang 115

1 Cho dãy A gồm N (N<100) số nguyên khác nhau sắp theo thứ tự tăng dần và một số nguyên k Tìm vị trí của k trong dãy.

Ngày đăng: 09/05/2015, 22:00

Xem thêm

HÌNH ẢNH LIÊN QUAN

SƠ ĐỒ KHỐI: - Tim hieu PASCAL
SƠ ĐỒ KHỐI: (Trang 51)
SƠ ĐỒ KHỐI: - Tim hieu PASCAL
SƠ ĐỒ KHỐI: (Trang 53)
SƠ ĐỒ KHỐI: - Tim hieu PASCAL
SƠ ĐỒ KHỐI: (Trang 64)
SƠ ĐỒ KHỐI - Tim hieu PASCAL
SƠ ĐỒ KHỐI (Trang 73)
SƠ ĐỒ KHỐI: - Tim hieu PASCAL
SƠ ĐỒ KHỐI: (Trang 79)

TỪ KHÓA LIÊN QUAN

w