1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình bằng Turbo Pascal part 2 ppt

28 458 1
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình bằng Turbo Pascal
Tác giả Nguyễn Đình Hoá
Người hướng dẫn Viện CNTT - ĐHQG Hà Nội
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Lập trình
Thể loại Bài giảng
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 28
Dung lượng 297,3 KB

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

Nội dung

Cú pháp: Var tên biến: kiểu dữ liệu ; - Sau từ khoá VAR có thể viết nhiều khai báo biến liên tiếp nhau, cách nhau dấu chấm phẩy.. Nhận thấy rằng các thμnh phần của biểu thức có thể lμ m

Trang 1

Chương 3 Các khai báo vμ câu lệnh đơn giản

1 Khai báo hằng và biến

Một nguyên tắc chung khi viết một chương trình Pascal lμ mọi thứ đều

phải được khai báo (vμ xây dựng) trước khi sử dụng Vì lẽ đó mμ ngay sau

tên chương trình lμ phần khai báo, rồi sau đó mới lμ thân chương trình

Như đã nêu trong phần giới thiệu cấu trúc một chương trình Pascal,

phần khai báo phải theo đúng trình tự dưới đây Phần nμo không cần đến thì

bỏ qua

1- Khai báo các thư viện chương trình mẫu sẽ dùng đến trong chương trình

Cú pháp: Từ khoá User, sau đó lμ danh sách các Unit

2- Khai báo các hằng

Cú pháp: Từ khoá Const, sau đó lμ danh sách khai báo hằng

3- Khai báo các kiểu

Cú pháp: Từ khoá Type, sau đó lμ danh sách các khai báo kiểu

4- Khai báo các biến

Cú pháp: Từ khoá Var, sau đó lμ danh sách các khai báo biến

5- Phần các chương trình con

Từ khoá Procedure để khai báo thủ tục

Từ khoá Function để khai báo hμm

Dưới đây sẽ trình bμy về khai báo hằng vμ khai báo biến Cách thực

hiện các khai báo khác sẽ được giới thiệu sau, khi bμn đến các chủ đề có liên

quan

Để tiện trình bμy các quy định về cú pháp ta quy ước rằng ngoμi các từ

khoá, tên chuẩn của Turbo Pascal lμ phần khung phải giữ nguyên (được in

đậm), những thμnh phần được nhấn mạnh bằng kiểu chữ nghiêng lμ các thμnh

phần mμ người xây dựng chương trình cần phải bổ xung thêm vμo

1.1 Khai báo hằng

1.1.1 Hằng lμ gì

Hằng lμ đại lượng nhận một giá trị xác định vμ không thay đổi trong

Trang 2

Có thể viết nhiều khai báo hằng liên tiếp nhau

Ví dụ: const

maxSize = 50 ; tieuDe = 'Cong hoa xa hoi chu nghia Viet nam' ; sigma = 0.1/ (2*pi) ;

laiXuat = 0.05 ;

Tại sao nên khai báo hằng

Một câu hỏi tự nhiên đặt ra lμ, tại sao nên dùng khai báo giá trị hằng thay cho việc viết trực tiếp giá trị ấy tại những nơi cần đến nó Sử dụng khai báo hằng sẽ có hai ưu điểm sau đây:

- Chương trình rõ rμng, dễ hiểu hơn Các tên hằng maxSize, sigma,

laiXuat trong các ví dụ trên rõ rμng lμ dễ hiểu, dễ nhớ hơn lμ các con số khô

khan mμ chúng thay thế

- Chương trình dễ chỉnh sửa hơn Ví dụ nếu sau nμy cần tăng kích thước lớn nhất cho phép lên 100 chứ không phải lμ 50 thì chỉ cần sửa duy nhất một chỗ lμ dòng khai báo Nếu lãi xuất được điều chỉnh lại lμ 0.04 thì cũng không phải sửa lại hết toμn bộ các công thức liên quan mμ chỉ cần sửa ở dòng khai báo mức lãi xuất lμ đủ

1.2 Khai báo biến

Biến lμ gì

Biến lμ các đại lượng mμ gía trị có thể biến đổi trong chương trình Biến lμ cái dùng để chứa các dữ liệu phục vụ cho quá trình tính toán, xử lí trong chương trình Nó có thể chứa dữ liệu đầu vμo, kết quả trung gian hay kết quả cuối cùng của quá trình xử lí

Mỗi biến chứa dữ liệu thuộc một kiểu dữ liệu nhất định

Trang 3

Khai báo biến lμ đăng kí tên của biến kèm với kiểu dữ liệu của nó

Các biến khác nhau không được trùng tên nhau Trình biên dịch sẽ dμnh cho mỗi biến một vùng nhớ xác định, đủ để chứa dữ liệu kiểu tương ứng Vùng nhớ nμy rộng hay hẹp (dμi, ngắn) đến đâu lμ do kiểu dữ liệu của biến quyết

định

1.2.2 Cú pháp vμ ví dụ

Cú pháp: Var tên biến: kiểu dữ liệu ;

- Sau từ khoá VAR có thể viết nhiều khai báo biến liên tiếp nhau, cách nhau dấu chấm phẩy

- Có thể khai báo đồng thời nhiều biến cùng kiểu Thay cho một tên

biến lμ danh sách các tên biến cách nhau dấu phẩy

- Có thể vừa khai báo vừa gán giá trị khởi đầu cho biến, viết dấu bằng, theo sau lμ một giá trị trực tiếp

Ví dụ: VAR

x,y,z: real ; GoPhim, Chon: char;

TimThay: boolean = true ; Dem: integer = 0 ;

2 Biểu thức trong ngôn ngữ Pascal

2.1 Biêủ thức là gì

Ta đã quen với khái niệm biểu thức toán học

Ví dụ các biểu thức số học

2 π R 10.34 + sin 2x

2 π R / (10.34 + sin 2x)

vμ các biểu thức lôgic

Δ ≠ 0 (Δ ≠ 0) AND (a = 0)

Nhận thấy rằng các thμnh phần của biểu thức có thể lμ một giá trị trực

tiếp như 2, 10.34, có thể lμ một hằng như số Pi, có thể lμ biến như x, có thể

lμ hμm như sin2x hoặc cũng có thể lμ một biểu thức khác

Trang 4

toán hạng có thể lμ một giá trị trực tiếp, một hằng, một biến, một hμm hoặc một biểu thức khác

Vì toán hạng có thể lμ một biểu thức khác, nếu kết hợp nhiều biểu thức bằng các dấu phép toán ta lại có biểu thức mới Bằng cách nμy ta có thể xây dựng các biểu thức ngμy cμng lớn vμ phức tạp

Việc thực hiện các phép toán để nhận đ−ợc kết quả cuối cùng gọi lμ tính giá trị của biểu thức

Ví dụ, các biểu thức số học ở trên có thể đ−ợc viết lại trong Pascal nh− sau

Kiểu của kết quả

đổi dấu - Nguyên, thực Giống toán hạng Một ngôi

Nhân * Nguyên, thực Giống toán hạng Chia

Chia bỏ d−

Chia lấy d−

/ DIV MOD

Nguyên, thực Nguyên Nguyên

Thực Nguyên Nguyên Nhân

Cộng Trừ

+

-

Nguyên hoặc thực

Giống toán hạng Cộng

So sánh = <>

< <=

> >=

Cùng kiểu logic

Trang 5

2.3 Viết đúng biểu thức

Lưu ý:

1- Không được bỏ qua dấu phép nhân “ * ” giữa hai thừa số Biểu thức

toán học 2x, trong Pascal phải viết đầy đủ lμ 2*x

2- Dấu phép chia lμ kí hiệu gạch xiên “/ ” Ví dụ 1 / (2* Pi) Không

dùng dấu hai chấm Không dùng cách viết tử số vμ mẫu số trên hai dòng

khác nhau

3- Nếu dãy liền nhau nhiều phép toán có cùng thứ tự ưu tiên thì thực

hiện từ trái sang phải

4- Để thay đổi thứ tự ưu tiên, dùng cặp dấu ngoặc đơn “( , )” Một cặp

dấu ngoặc đơn sẽ xác định một biểu thức con, như một toán hạng tham gia

cấu thμnh biểu thức lớn hơn chứa nó

Để thể hiện đúng vμ rõ rμng một biểu thức phức tạp cần phải sử dụng

Turbo Pascal lμ một ngôn ngữ lập trình cấu trúc Ngoμi những câu lệnh

đơn thực hiện một công việc xác định, có những câu lệnh cho phép phối hợp

tổ chức nhiều công việc theo một quy tắc nhất định Đó gọi lμ các câu lệnh

tạo cấu trúc điều khiển hay ngắn gọn lμ các lệnh cấu trúc

Ta có sơ đồ phân loại các câu lệnh như sau

1 - Câu Lệnh đơn giản:

-Lệnh gán :=

-Lệnh xuất write -Lệnh nhập read -Các lệnh khác: goto, halt, exit

2- Câu lệnh cấu trúc

-Lệnh ghép begin - end -Lệnh lựa chọn if, case -Lệnh lặp for, repeat, while

Dưới đây sẽ trình bμy các câu lệnh đơn giản

Trang 6

3.1 Lệnh gán

Gán giá trị cho một biến

Ngôn ngữ Pascal quy định dấu phép gán lμ dấu hai chấm, tiếp theo lμ dấu bằng “:=”, đọc lμ “gán bằng”

- Phép gán phải tương thích về kiểu dữ liệu, nghĩa lμ biến ở vế trái phải

có kiểu giống như giá trị của biểu thức ở vế phải

- Phép gán chấp nhận một số chuyển đổi kiểu "tự nhiên" Ví dụ, có thể gán một giá trị nguyên cho biến thực

Đề phòng: nhầm lẫn viết dấu phép gán chỉ có dấu bằng, thiếu dấu hai

chấm Dấu bằng “=” lμ dấu của phép “so sánh bằng nhau”

Write( biểu thức1 , biểu thức2 , , biểu thức n ) ; (2)

Writeln( biểu thức1 , biểu thức2 , , biểu thức n ); (3)

Trang 7

Dạng (1): bắt đầu từ vị trí con chạy, in ra mμn hình giá trị của biểu thức theo quy cách mặc định đối với kiểu dữ liệu của biểu thức đó In xong

con chạy dừng tại vị trí cuối cùng

Dạng (2): bắt đầu từ vị trí con chạy, in ra mμn hình lần lượt các giá trị

của các biểu thức 1 đến biểu thức n, nối tiếp liền nhau Giá trị của từng biểu thức được in ra theo quy cách mặc định đối với từng kiểu dữ liệu In xong con chạy dừng tại vị trí cuối cùng

Như vậy, thực chất câu lệnh dạng 2 lμ viết gọn của n câu lệnh dạng 1 liền nhau

Dạng (3): tác dụng như dạng (1) nhưng in xong thì thêm một dấu

xuống dòng, con chạy dừng tại cột đầu tiên của dòng dưới

Dạng (4): chỉ in ra một dấu xuống dòng tức lμ con chạy xuống cột đầu dòng dưới

3.3 Quy cách mặc định in ra các kiểu dữ liệu

Tóm lại quy cách mặc định in ra của từng kiểu dữ liệu lμ:

- Số nguyên: có bao nhiêu chữ số thì in ra đúng bấy nhiêu

- Số thực: in ra dưới dạng dấu phẩy động, theo trình tự như sau: dấu +/-, một chữ số phần nguyên (luôn khác 0), dấu chấm thập phân, 10 chữ số phần

lẻ (thêm số 0 vμo bên phải nếu cần), chữ E, dấu của phần mũ, hai chữ số giá trị của phần mũ

- Kí tự: chiếm đúng một vị trí Nếu lμ kí tự điều khiển thì thực hiện hμnh vi tương ứng

- Xâu kí tự: in ra đúng như nội dung, nhưng loại bỏ các dấu cách thừa bên phải

Trang 8

ChuVi:= 2* (Dai + Rong);

DienTich:= Dai * Rong ;

Writeln(' Chu vi la = ' , ChuVi );

Writeln(' Dien tich la = ' , DienTich);

End.

3.4 Lệnh in ra có kèm quy cách

Để bố trí mμn hình kết quả đẹp đẽ vμ dễ đọc hơn, ta cần sắp xếp các mục in ra sao cho đúng vị trí, dóng thẳng hμng, cột

Turbo Pascal cung cấp các lệnh in ra có quy cách Nguyên tắc chung lμ:

- ấn định số vị trí dμnh để in ra giá trị của một biểu thức bằng cách

thêm vμo sau biểu thức dấu hai chấm vμ số vị trí n đã ấn định

Trang 9

Cú pháp:

Write( biểu thức: n);

Phần “: n” thêm vμo sau biểu thức gọi lμ phần định dạng in ra

- Riêng với số thực, có thể in ra dưới dạng biểu diễn thập phân thông thường bằng cách chỉ rõ số vị trí dμnh cho toμn bộ con số lμ n vμ số vị trí dμnh cho phần lẻ lμ m

Write (ch:12); a

Tóm lại, nếu có ấn định quy cách máy sẽ dμnh số vị trí để in ra giá trị của biểu thức, căn lề từ bên phải, bỏ trống số vị trí thừa bên trái, cắt cụt (lμm sai giá trị !) nếu thiếu chỗ

Trang 10

Read( biến 1 , biến 2 , , biến n) ; (2)

Readln( biến 1 , biến 2 , , biến n ); (3)

Thực hiện

Khi nhập dữ liệu từ bμn phím thì mỗi mục dữ liệu lμ một giá trị trực

tiếp Các câu lệnh trên sẽ gán các giá trị trực tiếp đọc được cho biến tương

ứng

Dạng (1): khi gặp lệnh nμy máy sẽ đọc từ bμn phím một mục dữ liệu,

chuyển thμnh một giá trị trực tiếp của kiểu dữ liệu của biến vμ gán cho biến

Dạng (2): khi gặp lệnh nμy máy sẽ đọc từ bμn phím n mục dữ liệu lμ

n giá trị trực tiếp vμ gán lần lượt cho n biến theo đúng trình tự Đây lμ viết

gọn của n câu lệnh dạng 1

Dạng (3): như dạng (2), sau đó tìm đọc thêm 1 dấu xuống dòng Con chạy dừng sau dấu xuống dòng

Dạng (4): Tìm đọc một dấu xuống dòng Sau câu lệnh nμy, con chạy ở

đầu dòng tiếp theo Câu lệnh nμy thường dùng để tạm dừng chương trình, đợi

gõ phím Enter Người sử dụng chương trình có thì giờ xem các thông báo,

kết quả trung gian, kết quả cuối cùng khi thực thi chương trình

Quy cách đọc dữ liệu vμo

1- Chỉ có thể nhập từ bμn phím các kiểu dữ liệu: số nguyên, số thực, kí

tự vμ xâu kí tự Không thể nhập từ bμn phím dữ liệu kiểu logic

2- Phải đảm bảo gõ vμo tương ứng số mục dữ liệu vμ đúng kiểu dữ liệu

Dữ liệu được gõ vμo phải lμ một giá trị trực tiếp hợp lệ Một giá trị số thực

phải viết dưới dạng thập phân với dấu chấm thập phân Giá trị kiểu kí tự vμ

xâu kí tự không có cặp dấu nháy đơn bao quanh

Để hiểu rõ hμnh vi của thủ tục Read khi đọc nhiều mục dữ liệu liên

tiếp cần nắm vững dấu hiệu phân cách giữa các mục dữ liệu

1- Các mục dữ liệu kiểu số (số nguyên, số thực) được phân cách nhau bằng một (hoặc vμi) dấu cách, hoặc dấu Tab, hoặc dấu xuống dòng Enter

2- Mục dữ liệu kiểu kí tự không có dấu phân cách phía trước vμ phía sau Nghĩa lμ với kiểu kí tự máy đọc đúng một kí tự tiếp theo kể từ vị trí hiện tại, kể cả đó lμ kí tự khoảng trống

3- Với kiểu xâu kí tự String[n] thì phân cách bằng độ dμi cực đại n trong khai báo biến Máy sẽ đọc vμo đúng n kí tự, kể cả các kí tự khoảng

Trang 11

trống Dãy kí tự xếp liền nhau sẽ được ngắt đúng theo độ dμi n của từng

biến xâu kí tự tương ứng

Do đó, khi đọc vμo nhiều mục dữ liệu cần lưu ý sử dụng dấu phân cách

cho đúng Máy chỉ đọc vμ phải đọc đúng n mục dữ liệu, sau đó thực hiện câu lệnh tiếp theo Nếu chưa đủ n mục dữ liệu thì máy vẫn chờ đọc tiếp

Nếu gõ nhiều hơn thì các mục sau lμ thừa

3.6.4 Các ví dụ minh hoạ

Giả sử m, n lμ biến nguyên, x lμ biến thực

AB12CD34 Hanoi <Enter>

thì sẽ có s1:= AB12C s2:= D34 Ha, s3:= noi

3: Minh hoạ cách sử dụng các thủ tục Readln

thì máy sẽ đọc vμ gán được m:=1, n:=2 sau đó sẽ xuống dòng Máy sẽ chờ

để nhận tiếp giá trị cho x do câu lệnh sau chưa nhận được dữ liệu vμo Để

nhập đúng cần sửa lại thμnh

read(m,n); readln(x);

Trang 12

4 Một số hàm, thủ tục trình bày màn hình

Nhắc lại rằng mμn hình ở chế độ văn bản được chia bởi các cột vμ các

dòng thμnh các ô hình chữ nhật (thông thường có 80 cột vμ 25 dòng, tức lμ

2000 ô chữ nhật) Mỗi ô có thể hiển thị một kí tự trong bảng mã ASCII

Để trỏ đến một ô nμo đó, ta dùng cặp 2 số nguyên x,y gọi lμ tọa độ mμn hình (x:= 1 80, y:=1 25)

Turbo Pascal cung cấp một số hμm, thủ tục phục vụ việc trình bμy mμn hình ở chế độ văn bản Đây lμ một thư viện mẫu các chương trình con gọi lμ

unit CRT - Catot Ray Tube

Để sử dụng các hμm, thủ tục đó phải khai báo sẽ sử dụng unit CRT tại

GotoXY(x,y) : Di chuyển con chạy đến toạ độ (x,y)

Clreol: clear to end of line - xoá các kí tự từ vị trí con chạy đến cuối dòng

Sau đó, con chạy dừng tại vị trí trước khi thực hiện thủ tục nμy

Delline: Xoá toμn bộ dòng có con chạy Sau đó, con chạy dừng tại vị trí trước

khi thực hiện thủ tục nμy

WhereX: hμm cho biết con chạy đang ở cột nμo

WhereY: hμm cho biết con chạy đang ở dòng nμo

Windows (x1,y1,x2,y2): thiết lập một khung vô hình của cửa sổ hiển thị mới

Góc trên trái lμ (x1,y1) góc dưới phải lμ (x2,y2) Từ lúc nμy trở đi, mμn hình coi như thu nhỏ lại trong hình chữ nhật nμy Toạ độ x=1, y=1 sẽ

trùng với góc trên-trái của mμn hình thu nhỏ Tóm lại, các toạ độ được tính lại như sau

Xmới = Xcũ - x1 + 1

Ymới = Ycũ - y1 + 1

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

1 Những đại lượng nμo nên khai báo lμ hằng trong một chương trình Pascal Khai báo hằng có lợi gì so với viết trực tiếp giá trị của chúng

Trang 13

2 Các câu lệnh sau đây thực hiện việc gì

Writeln(' Cho 2 so '); Readln(M,N);

I:= M mod (990 - maxI);

I:= (maxI - 990) div M; X:= M/y; I:= PI * M;

X:= PI div y;

X:= M div N;

I:= (maxI - 990) mod M;

I:= M mod 0;

I:= M mod (maxI - 990);

4 Trình bμy kết quả thực hiện các lệnh sau

6 Giả sử dùng thủ tục Readln (a,b) để đọc vμo 2 số từ bμn phím Phải gõ

phím nμo sau khi gõ xong số thứ nhất ? sau khi gõ xong số thứ hai ? Nếu

đọc vμo hai biến kiểu kí tự a,b thì có gì thay đổi không

7 Giả sử dùng thủ tục Read để đọc vμo nhiều mục dữ liệu từ bμn phím

Điều gì sẽ xảy ra nếu ta gõ thừa, gõ thiếu so với số mục cần thiết

thực hμnh

Hãy viết chương trình thực hiện các công việc sau:

1 Giải phương trình bậc nhất ax + b = 0

2 Giải hệ phương trình tuyến tính cấp 2: ax+ by = e , cx + dy = f, giả thiet

rằng hệ duy nhất nghiệm

3 Lãi xuất tiết kiệm hμng tháng lμ k= 1% Tính số tiền có được sau 12 tháng nếu số gửi ban đầu lμ x

Trang 14

5 Cho số đo độ dμi 3 cạnh của một tam giác lμ a,b,c Tính diện tích tam

giác

6 Cho 3 đIểm A(x 1 , y 1 ), B( x 2 , y 2 ) vμ C(x 3 ,y 3 ) tạo thμnh một tam giác

Tính chu vi, diện tích của tam giác

Trang 15

Chương 4 Các cấu trúc điều khiển

Pascal lμ một ngôn ngữ lập trình có cấu trúc Một ngôn ngữ lập trình

cấu trúc có các câu lệnh tạo cấu trúc điều khiển Những câu lệnh cấu trúc nμy

cho phép kết hợp - hay "cấu trúc" - nhiều câu lệnh thμnh một đơn vị thống

nhất, liên quan chặt chẽ với nhau

Những câu lệnh có cấu trúc lμm cho chương trình trong sáng dễ hiểu,

đễ theo dõi hơn

Có 3 loại cấu trúc điều khiển: tuần tự, rẽ nhánh, vòng lặp

1 Câu lệnh ghép

Có thể nhóm nhiều câu lệnh khác nhau thμnh một khối, dùng 2 từ

khoá Begin, End

Các lệnh bên trong vẫn được thực hiện tuần tự từ câu lệnh 1 đến câu

lệnh n như thông thường, không có gì thay đổi Tuy nhiên câu lệnh ghép có

tác dụng để nhóm nhiều lệnh lại thμnh một câu lệnh duy nhất để phù hợp với

cú pháp của các cấu trúc điều khiển sau nμy

2 Câu lệnh IF

Câu lệnh If để thực hiện một cấu trúc rẽ nhánh, lựa chọn một trong hai

trường hợp: nếu thoả mãn một điều kiện nμo đó thì tiến hμnh lμm việc 1, nếu

Ngày đăng: 23/07/2014, 21:20

HÌNH ẢNH LIÊN QUAN

Hình 4.1: Lưu đồ minh hoạ ý nghĩa của câu lệnh If. - Lập trình bằng Turbo Pascal part 2 ppt
Hình 4.1 Lưu đồ minh hoạ ý nghĩa của câu lệnh If (Trang 16)
Hình 4.2: Lưu đồ của chương trình xét dấu. - Lập trình bằng Turbo Pascal part 2 ppt
Hình 4.2 Lưu đồ của chương trình xét dấu (Trang 17)
Hình  4.3: Lưu đồ của chương trình giải tam thức bậc hai. - Lập trình bằng Turbo Pascal part 2 ppt
nh 4.3: Lưu đồ của chương trình giải tam thức bậc hai (Trang 18)
Hình 4.4: Lưu đồ minh hoạ hoạt đọng của câu lệnh Repeat-Until. - Lập trình bằng Turbo Pascal part 2 ppt
Hình 4.4 Lưu đồ minh hoạ hoạt đọng của câu lệnh Repeat-Until (Trang 25)
Hình 4.5: Lưu đồ minh hoạ hoạt động của câu lệnh While - Lập trình bằng Turbo Pascal part 2 ppt
Hình 4.5 Lưu đồ minh hoạ hoạt động của câu lệnh While (Trang 28)

TỪ KHÓA LIÊN QUAN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN