[Pascal] Lý thuyết căn bản

M

mikelhpdatke

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

CÁC THÀNH PHẦN CƠ BẢN CỦA
NGÔN NGỮ LẬP TRÌNH PASCAL

Giới thiệu sơ lược:


Pascal là một ngôn ngữ lập trình bậc cao do Niklaus Wirth, giáo sư điện toá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à toán học và nhà triết học người Pháp nổi tiếng Blaise Pascal.


Nhìn chung, lý thuyết thì nhìn qua nhiều bạn kêu dài, nhưng nếu kết hợp lý thuyết trong khi lập trình (Cái gì không nhớ lại mở lý thuyết ra coi :)) ) thì sẽ dễ nhớ hơn nhiều.

1. Các tập tin cần thiết khi lập trình với Turbo 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.

Bạn nào trong máy chưa có chương trình Pascal có thể download Free Pascal hoặc Turbo Pascal ở 2 link dưới đây

http://www.softpedia.com/get/Programming/Coding-languages-Compilers/Free-Pascal.shtml

http://www.brothersoft.com/turbo-pascal-272943.html

2. Các bước cơ bản khi lập một chương trình Pascal

Bước 1
: Soạn thảo chương trình.
- Bước này là bước quan trọng, truớc tiên, để gõ code vào chương trình. Ta phải biết: Mình sẽ gõ cái gì và làm gì, gõ code vào như thế có giải quyết được bài toán không?.
- Khi làm một bài nào đó, phải tìm ra thuật giải của nó, sau đó thể hiện thuật giải = code và viết vào Pascal.

VD đơn giản: Muốn tính trung bình cộng của 3 số 1, 2 , 3. Phải lấy $\dfrac{1+2+3}{3}$
Vậy khi viết vào ta sẽ phải viết sao cho kết quả in ra là tbc của 3 số.
Mã:
BEGIN
 write('Trung binh cong cua 3 so 1, 2 , 3 la:' , (1+2+3)/3);
readln
End.

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. (Có thể bỏ qua bước này).
Bước 3: Chạy chương trình (nhấn phím Ctrl-F9).

3. Cấu trúc chung của một chương trình Pascal ( Mình sẽ nêu cấu trúc cơ bản thôi, những phần unit ,chương trình con… sẽ mở rộng sau)

Mã:
[FONT=Palatino Linotype][SIZE=3]{ [I]Phần tiêu đề [/I]}
  [B]                        PROGRAM[/B]  Tên_chương_trình;
                          { [I]Phần khai báo[/I] }[/SIZE][SIZE=3][B]               
                         USES[/B]     ......;  
[/SIZE] [SIZE=3]   [B]                        CONST[/B]  .....;   
[/SIZE] [SIZE=3]   [B]                        TYPE[/B]     .......; 
[/SIZE] [SIZE=3]   [B]                        VAR[/B]       ........;[/SIZE][SIZE=3]
                          { [I]Phần thân chương trình[/I] }
  [B]                        BEGIN[/B]

[/SIZE] [SIZE=3]                                ...........
  [B]                        END.[/B][/SIZE][SIZE=3]
[/SIZE][/FONT]

- Ý nghĩa của các từ khóa trong phần khai báo sẽ nói rõ ở #2

Ví dụ 1
: Chương trình Pascal đơn giản nhất

Mã:
 [SIZE=3]
BEGIN[/SIZE] [SIZE=3]
                     Write(‘Hello World!’);
            END.[/SIZE]


Ví dụ 2
:
Mã:
  [FONT=Palatino Linotype][SIZE=3]Program  Vidu2;
            Const  PI=3.14;
            Var  R,S:Real;
            Begin
                     R:=10;                            {Bán kính đường tròn}
                     S:=R*R*PI;  {Diện tích hình tròn}
                     Writeln(‘Dien tich hinh tron = ‘, S:0:2);  { In ra màn hình }
                     Readln;
            End.[/SIZE][/FONT]


- Các câu lệnh trong pascal, các kiểu dữ liệu (real, integer, word,..) sẽ đưọc nói ở #2.
-Hằng: Là giá trị không thể thay đổi.
VD:

Mã:
Const pi=3.14;

-Biến: Khai báo trước Var. Là giá trị có thể thay đổi.
VD:

Mã:
Var a,b:integer;

4. Một số phím chức năng thường dùng

(Để dễ nhớ các phím này, chúng ta nên kết hợp các phím trong khi lập trình)

· F2: Lưu chương trình đang soạn thảo vào đĩa.

· F3: Mở file mới hoặc file đã tồn tại trên đĩa để soạn thảo.

· Alt-F3: Đóng file đang soạn thảo.

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

· F8: Chạy từng câu lệnh một trong chương trình.

· Alt-X: Thoát khỏi Turbo Pascal.

· Alt-<Số thứ tự của file đang mở>: Dịch chuyển qua lại giữa các file đang mở.

· F10: Vào hệ thống Menu của Pascal.


5. Các thao tác cơ bản khi soạn thảo chương trình

5.1. Các phím thông dụng

· 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: Xoá 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ỏ.

5.2. Các thao tác trên khối văn bản

(Các phím có chức năng như copy, paste,.. ở pascal sẽ khác windows. Để muốn dùng các chức năng này như ngoài môi trường windows : Options -> Environment -> Keyboard & mouse - > Microsoft convention...)
6. Các thành phần cơ bản của ngôn ngữ Pascal

6.1. Từ khóa

Từ khoá là các từ mà Pascal dành riêng để phục vụ cho mục đích của nó. (Chẳng hạn như: BEGIN, END, IF, WHILE,...)

Chú ý
: Với Turbo Pascal 7.0 trở lên, các từ khoá trong chương trình sẽ được hiển thị khác màu với các từ khác.
6.2. Tên (định danh)

Đị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ừ khoá

· 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,các phép toán.

Ví dụ
: Các tên viết như sau là sai
1XYZ Sai vì bắt đầu bằng chữ số.

#LONG Sai vì bắt đầu bằng ký tự đặc biệt.

FOR Sai vì trùng với từ khoá.

KY TU Sai vì có khoảng trắng (space).

LAP-TRINH Sai vì dấu trừ (-) là phép toán.

6.3. Dấu chấm phẩy

Dấu chấm phẩy được dùng để ngăn cách giữa các câu lệnh. Không nên hiểu dấu chấm phẩy là dấu kết thúc câu lệnh.

Ví dụ
:
FOR i:=1 TO 10 DO Write(i);

Trong câu lệnh trên, lệnh Write(i) được thực hiện 10 lần. Nếu hiểu dấu chấm phẩy là kết thúc câu lệnh thì lệnh Write(i) chỉ thực hiện 1 lần.

6.4. Lời giải thích

Các lời bàn luận, lời chú thích có thể đưa vào bất kỳ chỗ nào trong chương trình để cho người đọc dể hiểu mà không làm ảnh hưởng đến các phần khác trong chương trình. Lời giải thích được đặt giữa hai dấu ngoạc { và } hoặc giữa cụm dấu (* và *). Trong Free Pascal, lời chú thích cũng có thể có "//" đặt trước dòng cần chú thích.

Ví dụ
:

Mã:
[FONT=Palatino Linotype][SIZE=3] Var a,b,c:Rea; {[I]Khai báo biến[/I]}[/SIZE] [SIZE=3]
Delta := b*b – 4*a*c; (* [I]Tính delta để giải phương trình bậc 2[/I] *)[/SIZE] [/FONT]

BÀI TẬP THỰC HÀNH

1. Khởi động Turbo Pascal / Free Pascal.

2. Nhập vào đoạn chương trình sau:

Mã:
[FONT=Palatino Linotype][SIZE=3]
Uses Crt;[/SIZE][/FONT][FONT=Palatino Linotype] [SIZE=3]
Begin[/SIZE] [SIZE=3]
Writeln(‘***********************************************************’);[/SIZE] [SIZE=3]
Writeln(‘ CHUONG TRINH PASCAL DAU TIEN CUA TOI ’);[/SIZE] [SIZE=3]
Writeln(‘ Oi! Tuyet voi! =)) =))...' );[/SIZE] [SIZE=3]
Writeln(‘***********************************************************’);[/SIZE] [SIZE=3]
Readln;[/SIZE] [SIZE=3]
End.[/SIZE][/FONT]

3. Dịch và chạy chương trình trên.

4. Lưu chương trình vào đĩa với tên BAI1.PAS.

5. Thoát khỏi Pascal.

6. Khởi động lại Turbo Pascal \ Free Pascal.

7. Mở file BAI1.PAS.

8. Chèn thêm vào dòng:

Mã:
  [FONT=Palatino Linotype][SIZE=3]CLRSCR; [/SIZE][/FONT]
vào sau dòng BEGIN.
Và chèn dòng
Mã:
  [FONT=Palatino Linotype][SIZE=3]Readln;[/SIZE][/FONT]
Vào trước END.
- Giải thích: Khi trong thân chương trình có clrscr; -->Clrscr là lệnh xóa sạch màn hình kết quả. Tức là sau khi chạy chương trình (Ctrl+ F9), các thông tin trên màn hình trước khi chạy chương trình sẽ được xóa hết. Nói đơn giản là lệnh này = lấy 1 cái giẻ lau xóa sạch bảng ;)).
Còn Readln; là để sau khi chạy chương trình(Ctrl+ F9( ta xem được kết quả. Nếu không dùng Readln; sau khi chạy chương trình bạn muốn xem kết quả thì phải ấn (Alt + F5) rất bất tiện.
- Khi ta khai báo
Mã:
  [FONT=Palatino Linotype][SIZE=3]Uses Crt;[/SIZE][/FONT]
Ở phần đầu CT -> Ctr; là thư viện của Pascal, phải khai báo lệnh này thì ở phần thân CT ta mới dùng lệnh Clrscr; được. Nếu các bạn không muốn dùng lệnh Clrscr ở phần thân chương trình thì không cần khai báo Uses Crt;
9. Dịch và chạy thử chương trình.

10. Lưu chương trình vào đĩa.

11. Thoát khỏi Pascal.


Tóm lại: Trong phần này chúng ta cần nhớ như sau:
- Các bước khi lập một chương trình (CT) Pascal. - Cấu trúc của một CT Pascal - Một số phím chức năng (Phím tắt) để thao tác lập trình nhanh hơn và chính xác hơn. - Các thành phần, yêu cầu cơ bản cuả ngôn ngữ Pascal (Từ khóa, tên, kết thúc mỗi lệnh phải có dấu chấm phẩy,..) - Gõ một CT Pascal đơn giản.

 
Last edited by a moderator:
M

mikelhpdatke

[Phần 1] CÁC KIỂU DỮ LIỆU CƠ BẢN KHAI BÁO HẰNG, BIẾN, KIỂU, BIỂU THỨC VÀ CÂU LỆNH

CÁC KIỂU DỮ LIỆU CƠ BẢN
KHAI BÁO HẰNG, BIẾN, KIỂU, BIỂU THỨC VÀ CÂU LỆNH

I. CÁC KIỂU DỮ LIỆU CƠ BẢN
1. Kiểu logic
- Từ khóa: BOOLEAN
- miền giá trị: (TRUE, FALSE).
- Các phép toán: phép so sánh (=, <, >) và các phép toá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 toán được thể hiện qua bảng dưới đây:

7_zps077a4cdf.png



2. Kiểu số nguyên
2.1. Các kiểu số nguyên (Đây là những kiểu số nguyên cơ bản, còn nhiều kiểu có kích thước / phạm vi lớn hơn mình sẽ nêu sau)

8_zps01ac743c.png


2.2. Các phép toán trên kiểu số nguyên
2.2.1. Các phép toá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).

2.2.2. Các phép toán xử lý bit:
Trên các kiểu ShortInt, Integer, Byte, Word có các phép toán:
· NOT, AND, OR, XOR.

9_zps621017a1.png

·

3. Kiểu số thực
3.1. Các kiểu số thực
:
10_zps11624c60.png


Chú ý: Các kiểu số thực Single, Double và Extended yêu cầu phải sử dụng chung với bộ đồng xử lý số hoặc phải biên dich chương trình với chỉ thị {$N+} để liên kết bộ giả lập số.

3.2. Các phép toán trên kiểu số thực: +, -, *, /
Chú ý: Trên kiểu số thực không tồn tại các phép toán DIV và MOD.

3.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).

4. Kiểu ký tự (Kiểu này sẽ được tìm hiểu rõ hơn khi chúng ta học đến các bài tập về xử lý xâu)
- Từ khoá: CHAR.
- Kích thước: 1 byte.
- Để biểu diễn một ký tự, ta có thể sử dụng một trong số các cách sau đây:
· Đặt ký tự trong cặp dấu nháy đơn. Ví dụ 'A', '0'.
· Dùng hàm CHR(n) (trong đó n là mã ASCII của ký tự cần biểu diễn). Ví dụ CHR(65) biễu diễn ký tự 'A'.
· Dùng ký hiệu #n (trong đó n là mã ASCII của ký tự cần biểu diễn). Ví dụ #65.
- Các phép toán: =, >, >=, <, <=,<>.

* 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'.

II. KHAI BÁO 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:
CONST <Tên hằng> = <Giá trị>;
hoặc:
CONST <Tên hằng>: = <Biểu thức hằng>;
Ví dụ:
Mã:
  [FONT=Palatino Linotype][SIZE=3]            CONST           Max = 100;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]                                                            Name = 'Tran Van Hung';[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]                                                            Continue = FALSE;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]                                                            Logic = ODD(5);                  {Logic =TRUE}[/SIZE][/FONT]



III. KHAI BÁO 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:
VAR <Tên biến>[,<Tên biến 2>,...] : <Kiểu dữ liệu>;
Ví dụ:
Mã:
  [FONT=Palatino Linotype][SIZE=3]            VAR               x, y: Real;  {Khai báo hai biến x, y có kiểu là Real}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]                                                a, b: Integer;  {Khai báo hai biến a, b có kiểu integer}[/SIZE][/FONT]

Chú ý: Ta có thể vừa khai báo biến, vừa gán giá trị khởi đầu cho biến bằng cách sử dụng cú pháp như sau:
CONST <Tên biến>: <Kiểu> = <Giá trị>;
Ví dụ:
Mã:
  [FONT=Palatino Linotype][SIZE=3]            CONST           x:integer = 5;[/SIZE][/FONT]

Với khai báo biến x như trên, trong chương trình giá trị của biến x có thể thay đổi. (Điều này không đúng nếu chúng ta khai báo x là hằng).
 
M

mikelhpdatke

IV. ĐỊNH NGHĨA KIỂU
- Ngoài các kiểu dữ liệu do Turbo Pascal cung cấp, ta có thể định nghĩa các kiểu dữ liệu mới dựa trên các kiểu dữ liệu đã có.
- Cú pháp:
TYPE <Tên kiểu> = <Mô tả kiểu>;
VAR <Tên biến>:<Tên kiểu>;
Ví dụ:
Mã:
    [FONT=Palatino Linotype][SIZE=3]            TYPE  Sothuc = Real;[/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3]                                                Tuoi = 1..100;[/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3]                                                ThuNgay = (Hai,Ba,Tu,  Nam, Sau, Bay, CN)[/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3]            VAR               x :Sothuc;[/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3]                                                tt : Tuoi;[/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3]                                                Day: ThuNgay;[/SIZE][/FONT]
V. BIỂU THỨC
Biểu thức (expression) là công thức tính toán mà trong đó bao gồm các phép toá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 toán được liệt kê theo thứ tự sau:
· Lời gọi hàm.
· Dấu ngoặc ()
· Phép toán một ngôi (NOT, -).
· Phép toán *, /, DIV, MOD, AND.
· Phép toán +, -, OR, XOR
· Phép toán so sánh =, <, >, <=, >=, <>, IN

VI. CÂU LỆNH
6.1. Câu lệnh đơn giản
- Câu lệnh gán :)=): <Tên biến>:=<Biểu thức>;
- Các lệnh xuất nhập dữ liệu: READ/READLN, WRITE/WRITELN.
- Lời gọi hàm, thủ tục.

Câu lệnh gán này có khá nhiều bạn hiểu sai bản chất:
VD:
Mã:
a:=5;
b:=3;
b:=a;
Tức là giá trị của a được gán vào b.
Lúc này b=5; a =5.



6.2. Câu lệnh có cấu trúc (Mình sẽ post ở phần sau)
- Câu lệnh ghép: BEGIN ... END;
- Các cấu trúc điều khiển: IF.., CASE..., FOR..., REPEAT..., WHILE...

6.3. Các lệnh xuất nhập dữ liệu
6.3.1. Lệnh xuất dữ liệu
Để xuất dữ liệu ra màn hình, ta sử dụng ba dạng sau:
(1) WRITE(<tham số 1> [, <tham số 2>,...]);
(2) WRITELN(<tham số 1> [, <tham số 2>,...]);
(3) WRITELN;
Các thủ tục trên có chức năng như sau:
(1) 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.
(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.
(3) Xuất ra màn hình một dòng trống.
Các tham số có thể là các hằng, biến, biểu thức. Nếu có nhiều tham số trong câu lệnh thì các tham số phải được phân cách nhau bởi dấu phẩy.
Khi sử dụng lệnh WRITE/WRITELN, ta có hai cách viết: không qui cáchcó qui cách:
- Viết không qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên trái. Nếu dữ liệu là số thực thì sẽ được in ra dưới dạng biểu diễn khoa học.
Ví dụ:
Mã:
    [FONT=Palatino Linotype][SIZE=3]                        WRITELN(x); WRITE(sin(3*x));[/SIZE][/FONT]
- Viết có qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên phải.
Ví dụ:
Mã:
    [FONT=Palatino Linotype][SIZE=3]                        WRITELN(x:5); WRITE(sin(13*x):5:2);[/SIZE][/FONT]
1_zps5c339183.png


6.3.2. Nhập dữ liệu
Để nhập dữ liệu từ bàn phím vào các biến có kiểu dữ liệu chuẩn (trừ các biến kiểu BOOLEAN), ta sử dụng cú pháp sau đây:


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

VD: Yêu cầu nhập a từ bàn phím rồi tím a+5:
Mã:
    [FONT=Palatino Linotype][SIZE=3][B]Var a:integer;[/B][/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3][B]BEGIN[/B][/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3][B]Readln(a);[/B][/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3][B]Write(a+5);[/B][/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3][B]Readln;[/B][/SIZE][/FONT]
    [FONT=Palatino Linotype][SIZE=3][B]End.[/B][/SIZE][/FONT]
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.

6.4. Các hàm và thủ tục thường dùng trong nhập xuất dữ liệu
· Hàm KEYPRESSED: Hàm trả về giá trị TRUE nếu như có một phím bất kỳ được nhấn, nếu không hàm cho giá trị là FALSE.
· Hàm READKEY: Hàm có chức năng đọc một ký tự từ bộ đệm bàn phím.
· Thủ tục GOTOXY(X,Y:Integer): Di chuyển con trỏ đến cột X dòng Y.
· Thủ tục CLRSCR: Xoá màn hình và đưa con trỏ về góc trên bên trái màn hình.


VD:

Bài tập : Viết chương trình nhập vào 2 số a, b. Sau đó hoán đổi giá trị của 2 số đó:
a/ Cho phép dùng biến trung gian.

Mã:
  [FONT=Palatino Linotype][SIZE=3]Program Swap;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]Var    a,b,tam: Integer;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]Begin[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Write('Nhap vao a= '); Readln(a);[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Write('Nhap vao b= '); Readln(b);[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          tam:=a;        {[I]tam lấy giá trị của a[/I]}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          a:=b;            {[I]a lấy giá trị của b[/I]}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          b:=tam;        {[I]b lấy lại giá trị của tam[/I]}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Writeln('a = ',a,’ b = ‘,b);[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Readln;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]End.[/SIZE][/FONT]
b/ Không được phép dùng biến trung gian.

Mã:
  [FONT=Palatino Linotype][SIZE=3]Program Swap;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]Var    a,b: Integer;[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]Begin[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Write('Nhap vao a= '); Readln(a);[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Write('Nhap vao b= '); Readln(b);[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          a:=a+b;        {[I]a lấy tổng giá trị của a+b[/I]}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          b:=a-b;         {[I]b lấy giá trị của a[/I]}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          a:=a-b;                  {[I]a lấy lại giá trị của b[/I]}[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Writeln('a = ',a,’ b = ‘,b);[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]          Readln;[/SIZE][/FONT]
[FONT=Palatino Linotype][SIZE=3]
[/SIZE][/FONT]
  [FONT=Palatino Linotype][SIZE=3]End.[/SIZE][/FONT]
Bài tập
http://diendan.hocmai.vn/showthread.php?t=260770
http://diendan.hocmai.vn/showpost.php?p=2140752&postcount=4

 
Last edited by a moderator:
M

mikelhpdatke

Các câu lệnh có cấu trúc

CÁC CÂU LỆNH CÓ CẤU TRÚC
Chú ý: Đây là một bài khá quan trọng, mọi chi tiết thắc mắc, các bạn không hiểu chỗ nào, phần nào --> http://diendan.hocmai.vn/showthread.php?t=260767
I. CÂU LỆNH RẼ NHÁNH

1.1. Lệnh IF
Cú pháp:

(1) IF B THEN S;
(2) IF B THEN S1 ELSE S2;
Sơ đồ thực hiện:

1_zps00d1bc6a.png

Chú ý
: Khi sử dụng câu lệnh IF thì đứng trước từ khoá ELSE không được có dấu chấm phẩy (;).
1.2. Lệnh CASE
Cú pháp:

3_zpsdf9951df.png

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ê.
->Const i: Hằng thứ 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 const i thì máy sẽ thực hiện lệnh Si tương ứng.

- 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.

VD:

Mã:
a:=10;
 Case A of 
    9: write('a=9');
   10:write('a=10');
 End;

Sau khi chạy thì hiện nhiên ct sẽ in ra "a=10".
II. CÂU LỆNH LẶP

2.1. Vòng lặp xác định
Có hai dạng sau:

3_zps3cef3b1b.png
vd

Mã:
For i:=1 to 10 do write(i, ' ');
writeln;
For i:=10 downto 5 do write(i,' ');
Chú ý : Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:
§
Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR vì làm như vậy có thể sẽ không kiểm soát được biến đếm.
§
Giá trị Max và Min trong câu lệnh FOR sẽ được xác định ngay khi vào đầu vòng lặp. Do đó cho dù trong vòng lặp ta có thay đổi giá trị của nó thì số lần lặp cũng không thay đổi.
5.3.2. Vòng lặp không xác định

4_zps8dd314e3.png


Ý 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.

5_zpse94c7c4e.png

vd:
Mã:
sum:=0;
i:=0;
 Repeat
   i:=i+1;
   sum:=sum+i;
  Until sum=10;
Mã:
sum:=0;
i:=0;
 while sum<10 do
    Begin
      i:=i+1;
       sum:=sum+i;
    End;
BÀI TẬP MẪU

Bài tập 3.1
: Viết chương trình nhập vào một số nguyên và kiểm tra xem số vừa nhập là số chẵn hay số lẻ.

Mã:
[FONT=Palatino Linotype][SIZE=3] [B]Uses crt;[/B][/SIZE]  [SIZE=3]      
[B]Var  x:integer;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]  Write('Nhap vao mot so nguyen : ');  Readln(x);[/B][/SIZE] [SIZE=3]   
[B]     If x MOD 2=0 Then [/B][/SIZE] [SIZE=3]   
[B]          Writeln('So vua nhap vao la so chan')[/B][/SIZE] [SIZE=3]   
[B]     Else[/B][/SIZE] [SIZE=3]   
[B]          Writeln('So vua nhap vao la so le');[/B][/SIZE] [SIZE=3]   
[B]     Readln;[/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE] [SIZE=3]   
[/SIZE][/FONT]

Bài tập 3.2
: Viết chương trình giải phương trình bậc nhất ax+b=0

Mã:
  [FONT=Palatino Linotype][SIZE=3] [B]Uses Crt;[/B][/SIZE]  [SIZE=3]      
[B]Var  a,b,x : real;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]     Write('a = '); Readln(a);[/B][/SIZE] [SIZE=3]   
[B]     Write('b = '); Readln(b);[/B][/SIZE] [SIZE=3]   
[B]     If a = 0 Then      [/B][/SIZE] [SIZE=3]   [B]{ Nếu a bằng 0 }[/B]
[B]          If b = 0 Then  [/B][/SIZE] [SIZE=3]   [B]{ Trường hợp a = 0 và b = 0 }[/B]
[B]              Writeln('Phuong trinh co vo so nghiem')[/B][/SIZE] [SIZE=3]   
[B]          Else   [/B][/SIZE] [SIZE=3]   [B]{ Trường hợp a=0 và b [/B][B]¹[/B][B] 0 }[/B]
[B]              Writeln('Phuong trinh vo nghiem')[/B][/SIZE] [SIZE=3]   
[B]     Else  [/B][/SIZE] [SIZE=3]   [B]{ Trường hợp a [/B][B]¹[/B][B] 0 }[/B]
[B]          Begin[/B][/SIZE] [SIZE=3]   
[B]              x:= -b/a;[/B][/SIZE] [SIZE=3]   
[B]              Writeln('Phuong trinh co nghiem la :',x:0:2);[/B][/SIZE] [SIZE=3]   
[B]          End;[/B][/SIZE] [SIZE=3]   
[B]     Readln;[/B][/SIZE] [SIZE=3]   
[B]End.  [/B][/SIZE][/FONT]


Bài tập 3.3
: Viết chương trình nhập vào tuổi của một người và cho biết người đó là thiếu niên, thanh niên, trung niên hay lão niên. Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ 18 đến 39 là thanh niên, từ 40 đến 60 là trung niên và lớn hơn 60 là lão niên.

Mã:
  [FONT=Palatino Linotype][SIZE=3] [B]Uses crt;[/B][/SIZE]  [SIZE=3]      
[B]Var tuoi:Byte;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]     Write(Nhap vao tuoi cua mot nguoi:'); Readln(tuoi);[/B][/SIZE] [SIZE=3]   
[B]     Case tuoi Of[/B][/SIZE] [SIZE=3]   
[B]          1..17:    Writeln(Nguoi nay la thieu nien');[/B][/SIZE] [SIZE=3]   
[B]          18..39:   Writeln(Nguoi nay la thanh nien');[/B][/SIZE] [SIZE=3]   
[B]          40..60:   Writeln(Nguoi nay la trung nien');[/B][/SIZE] [SIZE=3]   
[B]          Else      Writeln(Nguoi nay la lao nien');[/B][/SIZE] [SIZE=3]   
[B]     End;[/B][/SIZE] [SIZE=3]   
[B]     Readln;[/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE] [SIZE=3]   
[/SIZE][/FONT]
[FONT=&quot]
[/FONT]
Bài tập 3.4 : Viết chương trình tính tổng S = 1+2+...+N.
Cách 1
: Dùng vòng lặp FOR.

Mã:
  [FONT=Palatino Linotype][SIZE=3] [B]Program TinhTong;[/B][/SIZE] [SIZE=3]   
[B]Uses crt;[/B][/SIZE] [SIZE=3]   
[B]Var N,i,S:integer;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]          Clrscr;[/B][/SIZE] [SIZE=3]   
[B]          Write('Nhap vao gia tri cua N :'); Readln(N);[/B][/SIZE] [SIZE=3]   
[B]          S:=0;[/B][/SIZE] [SIZE=3]   
[B]          For i:=1 to N do S:=S+i;[/B][/SIZE] [SIZE=3]   
[B]          Writeln('Ket qua la :',S);[/B][/SIZE] [SIZE=3]   
[B]          Readln; [/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE] [SIZE=3]   
[/SIZE][/FONT]
[FONT=&quot]
[/FONT]
Cách 2 : Dùng vòng lặp REPEAT.

Mã:
 [B]Program TinhTong;[/B]
Mã:
 [SIZE=3]   
[B]Uses crt;[/B][/SIZE] [SIZE=3]   
[B]Var N,i,S:integer;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]          Clrscr;[/B][/SIZE] [SIZE=3]   
[B]          Write('Nhap vao gia tri cua N :'); Readln(N);[/B][/SIZE] [SIZE=3]   
[B]          S:=0; i:=1;[/B][/SIZE] [SIZE=3]   
[B]          Repeat[/B][/SIZE] [SIZE=3]   
[B]                   S:=S+i;[/B][/SIZE] [SIZE=3]   
[B]                   i:=i+1;[/B][/SIZE] [SIZE=3]   
[B]          Until i>N;[/B][/SIZE] [SIZE=3]   
[B]          Writeln('Ket qua la :',S);[/B][/SIZE] [SIZE=3]   
[B]          Readln; [/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE] [SIZE=3]   
[/SIZE]
Mã:
[FONT=&quot]
[/FONT]
Cách 3 : Dùng vòng lặp WHILE.

Mã:
  [FONT=Palatino Linotype][SIZE=3] [B]Program TinhTong;[/B][/SIZE] [SIZE=3]   
[B]Uses crt;[/B][/SIZE] [SIZE=3]   
[B]Var N,i,S:integer;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]          Clrscr;[/B][/SIZE] [SIZE=3]   
[B]          Write('Nhap vao gia tri cua N :'); Readln(N);[/B][/SIZE] [SIZE=3]   
[B]          S:=0; i:=1;[/B][/SIZE] [SIZE=3]   
[B]          While i<=N Do[/B][/SIZE] [SIZE=3]   
[B]                   Begin[/B][/SIZE] [SIZE=3]   
[B]                             S:=S+i;[/B][/SIZE] [SIZE=3]   
[B]                             i:=i+1;[/B][/SIZE] [SIZE=3]   
[B]                   End;[/B][/SIZE] [SIZE=3]   
[B]          Writeln('Ket qua la :',S);[/B][/SIZE] [SIZE=3]   
[B]          Readln; [/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE] [SIZE=3]   
[/SIZE][/FONT]
Bài tập 3.5 : Viết chương trình nhập vào N số nguyên từ bàn phím. Hãy tính và in ra màn hình tổng của các số vừa được nhập vào.
Ý tưởng
:
Dùng phương pháp cộng dồn. Cho vòng lặp FOR chạy từ 1 tới N, ứng với lần lặp thứ i, ta nhập vào số nguyên X và đồng thời cộng dồn X vào biến S.


Mã:
  [FONT=Palatino Linotype][SIZE=3] [B]Program  Tong;[/B][/SIZE]  [SIZE=3]      
[B]Uses crt;[/B][/SIZE] [SIZE=3]   
[B]Var N,S,i,X : Integer;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]          Clrscr; S:=0;[/B][/SIZE] [SIZE=3]   
[B]          For i:=1 To n Do[/B][/SIZE] [SIZE=3]   
[B]                   Begin[/B][/SIZE] [SIZE=3]   
[B]                             Write('Nhap so nguyen X= '); Readln(X);[/B][/SIZE] [SIZE=3]   
[B]                             S:=S+X;[/B][/SIZE] [SIZE=3]   
[B]                   End;[/B][/SIZE] [SIZE=3]   
[B]          Writeln(‘Tong cac so duoc nhap vao la: ‘,S); [/B][/SIZE] [SIZE=3]   
[B]          Readln;[/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE] [SIZE=3]   
[/SIZE][/FONT]
[FONT=&quot]
[/FONT]
Bài tập 3.6 : Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết thúc. Hãy đếm xem có bao nhiêu số chẵn vừa được nhập vào.
Ý tưởng
:
Bài toán này không biết chính xác số lần lặp nên ta không thể dùng vòng lặp FOR. Vì phải nhập vào số nguyên N trước, sau đó mới kiểm tra xem N=0? Do đó ta nên dùng vòng lặp REPEAT.


Mã:
  [FONT=Palatino Linotype][SIZE=3] [B]Program  Nhapso;[/B][/SIZE]  [SIZE=3]      
[B]Uses crt;[/B][/SIZE] [SIZE=3]   
[B]Var N,dem : Integer;[/B][/SIZE] [SIZE=3]   
[B]Begin[/B][/SIZE] [SIZE=3]   
[B]          Clrscr; dem:=0;[/B][/SIZE] [SIZE=3]   
[B]          Repeat[/B][/SIZE] [SIZE=3]   
[B]                   Write('Nhap vao mot so nguyen N= '); Readln(N);[/B][/SIZE] [SIZE=3]   
[B]                   If N MOD 2 = 0 Then dem:=dem+1;[/B][/SIZE] [SIZE=3]   
[B]          Until N=0;[/B][/SIZE] [SIZE=3]   
[B]          Writeln(‘Cac so chan duoc nhap vao la: ‘,dem); [/B][/SIZE] [SIZE=3]   
[B]          Readln;[/B][/SIZE] [SIZE=3]   
[B]End.[/B][/SIZE][/FONT]

 
M

mikelhpdatke

Bài tập 3.7: Viết chương trình tính số Pi với độ chính xác Epsilon, biết:
Pi/4 = 1-1/3+1/5-1/7+...

Ý tưởng
:
Ta thấy rằng, mẫu số là các số lẻ có qui luật: 2*i+1 với i=1,...,n. Do đó ta dùng i làm biến chạy.

Vì tính số Pi với độ chính xác
Epsilonnên không biết trước được cụ thể số lần lặp, do đó ta phải dùng vòng lặp WHILE hoặc REPEAT. Có nghĩa là phải lặp cho tới khi t=4/(2*i+1) £ Epsilon thì dừng.

Mã:
[FONT=Palatino Linotype][SIZE=3]Uses Crt;[/SIZE]      [SIZE=3]
Const [/SIZE]   [SIZE=3]Epsilon[/SIZE][SIZE=3]=1E-4;[/SIZE][SIZE=3]
Var Pi,t:real;[/SIZE]   [SIZE=3]
    i,s:Integer;[/SIZE]   [SIZE=3]
Begin[/SIZE]   [SIZE=3]
          Pi:=4;  i:=1; s:=-1;[/SIZE]   [SIZE=3]
          t:=4/(2*i+1);[/SIZE]   [SIZE=3]
          While t>[/SIZE]   [SIZE=3]Epsilon[/SIZE][SIZE=3] Do[/SIZE][SIZE=3]
                   Begin[/SIZE]   [SIZE=3]
                             Pi:=Pi+s*t;[/SIZE]   [SIZE=3]
                             s:=-s; i:=i+1;[/SIZE]   [SIZE=3]
                             t:=4/(2*i+1);[/SIZE]   [SIZE=3]
                   End;[/SIZE]   [SIZE=3]
          Writeln('So Pi = ',Pi:0:4);[/SIZE]   [SIZE=3]
          Readln;[/SIZE]   [SIZE=3]
End.[/SIZE]   [/FONT]

Bài tập 3.8
: Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N.
Ý tưởng
:
Cho biến i chạy từ 1 tới N. Nếu N MOD i=0 thì viết i ra màn hình.


Mã:
 [FONT=Palatino Linotype][SIZE=3][B]Uses Crt; [/B][/SIZE][SIZE=3]
[B]Var N,i : Integer;[/B][/SIZE]   [SIZE=3]
[B]Begin[/B][/SIZE]   [SIZE=3]
[B]          Clrscr; [/B][/SIZE]   [SIZE=3]
[B]          Write('Nhap so nguyen N= '); Readln(N);[/B][/SIZE]   [SIZE=3]
[B]          For i:=1 To N Do[/B][/SIZE]   [SIZE=3]
[B]                   If N MOD i=0 Then Write(i:5); [/B][/SIZE]   [SIZE=3]
[B]          Readln;[/B][/SIZE]   [SIZE=3]
[B]End.[/B][/SIZE]   [SIZE=3]
  [/SIZE][/FONT]

Bài tập 3.9
: Viết chương trình tìm USCLN và BSCNN của 2 số a, b được nhập vào từ bàn phím.
Ý tưởng
:
- Tìm USCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng. Lúc đó: USCLN=a.

- BSCNN(a,b) = a*b DIV USCLN(a,b).


Mã:
  [FONT=Palatino Linotype][SIZE=3][B]Uses crt;[/B][/SIZE][SIZE=3]
[B]Var a,b,aa,bb:integer;[/B][/SIZE]   [SIZE=3]
[B]Begin[/B][/SIZE]   [SIZE=3]
[B]          Write('Nhap a : '); Readln(a);[/B][/SIZE]   [SIZE=3]
[B]          Write('Nhap b : '); Readln(b);[/B][/SIZE]   [SIZE=3]
[B]          aa:=a; bb:=b;[/B][/SIZE]   [SIZE=3]
[B]          While aa<>bb Do[/B][/SIZE]   [SIZE=3]
[B]                   Begin[/B][/SIZE]   [SIZE=3]
[B]                             If aa>bb Then aa:=aa-bb Else    bb:=bb-aa;[/B][/SIZE]   [SIZE=3]
[B]                   End;[/B][/SIZE]   [SIZE=3]
[B]          Writeln('USCLN= ',aa);[/B][/SIZE]   [SIZE=3]
[B]          Writeln('BSCNN= ',a*b DIV aa);[/B][/SIZE]   [SIZE=3]
[B]          Readln; [/B][/SIZE]   [SIZE=3]
[B]End.[/B][/SIZE]   [SIZE=3]
  [/SIZE][/FONT]
Bài tập 3.10 : Viết chương trình tìm các số có 3 chữ số $\overline{a b c}$ sao cho: $\overline{a b c} = a3 + b3 + c3.$
Ý tưởng
:
Dùng phương pháp vét cạn. Ta biết rằng: a có thể có giá trị từ 1
->9 (vì a là số hàng trăm), b,c có thể có giá trị từ 0->9. Ta sẽ dùng 3 vòng lặp FOR lồng nhau để duyệt qua tất cả các trường hợp của a,b,c.
Ứng với mỗi bộ abc, ta sẽ kiểm tra: Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra bộ abc đó.


Mã:
[FONT=Palatino Linotype][SIZE=3][B]Uses crt;[/B][/SIZE] [SIZE=3]
[B]Var a,b,c : Word;[/B][/SIZE]   [SIZE=3]
[B]Begin[/B][/SIZE]   [SIZE=3]
[B]          For a:=1 To 9 Do[/B][/SIZE]   [SIZE=3]
[B]                   For b:=0 To 9 Do[/B][/SIZE]   [SIZE=3]
[B]                             For c:=0 To 9 Do[/B][/SIZE]   [SIZE=3]
[B]                                      If (100*a + 10*b + c)=(a*a*a + b*b*b + c*c*c) Then Writeln(a,b,c); [/B][/SIZE]   [SIZE=3]
[B]          Readln;[/B][/SIZE]   [SIZE=3]
[B]End.[/B][/SIZE]   [SIZE=3]
  [/SIZE][/FONT]
Bài tập 3.11 : Viết chương trình nhập vào số tự nhiên N rồi thông báo lên màn hình số đó có phải là số nguyên tố hay không.
Ý tưởng
:
N là số nguyên tố nếu N không có ước số nào từ 2
-> N div 2. Từ định nghĩa này ta đưa ra giải thuật:
- Đếm số ước số của N từ 2
-> N div 2 lưu vào biến d.
- Nếu d=0 thì N là số nguyên tố.


Mã:
 [FONT=Palatino Linotype][SIZE=3][B]Uses crt;[/B][/SIZE][SIZE=3]
[B]Var N,i,d : Word;[/B][/SIZE]   [SIZE=3]
[B]Begin[/B][/SIZE]   [SIZE=3]
[B]          If N<2 Then Writeln(N,’ khong phai la so nguyen to’)[/B][/SIZE]   [SIZE=3]
[B]          Else[/B][/SIZE]   [SIZE=3]
[B]          Begin[/B][/SIZE]   [SIZE=3]
[B]                   {Đếm số ước số}[/B][/SIZE]   [SIZE=3]
[B]                   d:=0;[/B][/SIZE]   [SIZE=3]
[B]                   For i:=2 To N div 2 Do[/B][/SIZE]   [SIZE=3]
[B]                             If N MOD i=0 Then d:=d+1;[/B][/SIZE]   [SIZE=3]
[B]                   {Kiểm tra}[/B][/SIZE]   [SIZE=3]
[B]                   If d=0 Then Writeln(N,’ la so nguyen to’)[/B][/SIZE]   [SIZE=3]
[B]                   Else Writeln(N,’ khong phai la so nguyen to’);[/B][/SIZE]   [SIZE=3]
[B]          End; [/B][/SIZE]   [SIZE=3]
[B]          Readln;[/B][/SIZE]   [SIZE=3]
[B]End.[/B][/SIZE][/FONT]
 
M

mikelhpdatke

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


I. KHAI BÁO MẢNG

Cú pháp:

Mã:
[FONT=Palatino Linotype][SIZE=3]                   TYPE <Kiểu mảng> = ARRAY [chỉ số] OF <Kiểu dữ liệu>; [/SIZE][/FONT][FONT=Palatino Linotype]            [SIZE=3]
                   VAR   <Biến mảng>:<Kiểu mảng>;
[/SIZE] [/FONT]
hoặc khai báo trực tiếp:
Mã:
 [SIZE=3]
          [COLOR=Red]VAR               <Biến mảng> : ARRAY [chỉ số] OF <Kiểu dữ liệu>; 
  [/COLOR][/SIZE]
Mã:
Ví dụ:

Mã:
   [SIZE=3] [B]            TYPE  Mangnguyen = Array[1..100] of Integer;[/B][/SIZE]   [SIZE=3]
[B]                                                Matrix = Array[1..10,1..10] of Integer;[/B][/SIZE]   [SIZE=3]
[B]                                                MangKytu = Array[Byte] of Char;[/B][/SIZE]   [SIZE=3]
[B]            VAR               A: Mangnguyen;[/B][/SIZE]   [SIZE=3]
[B]                                                M: Matrix;[/B][/SIZE]   [SIZE=3]
[B]                                                C: MangKytu;[/B][/SIZE]

hoặc:
Mã:
[FONT=Palatino Linotype][SIZE=3] [B]         [COLOR=Red]VAR               A: Array[1..100] of Integer;[/COLOR][/B][/SIZE]   [SIZE=3]
[/SIZE][/FONT]
II. XUẤT NHẬP TRÊN DỮ LIỆU KIỂU MẢNG
- Để truy cập đến phần tử thứ k trong mảng một chiều A, ta sử dụng cú pháp: A[k].

- Để truy cập đến phần tử (i,j) trong mảng hai chiều M, ta sử dụng cú pháp: M[i,j].

- Có thể sử dụng các thủ tục READ(LN)/WRITE(LN) đối với các phần tử của biến kiểu mảng.



1-73.png



Một chương trình nhỏ vd:

Mã:
Var A:array[1..100] Of integer;
      N,i:Integer;
Begin
 Write(' Nhap so chu so trong mang :' );
 Readln(N);
For i:=1 to  N do
   Begin
     Write('A[',i,']= '); 
      Readln(A[i]);
     End;

{In mang sau khi nhap}
Writeln('*********************************');
Write('Mang sau khi nhạp la: ');
For i:=1 to n do write(A[i],' ');
Writeln;
readln
End.
Ta có thể hiểu đại khái như sau: Mảng = Một trường học có 15 lớp (VD thế :D)
15 lớp, mỗi lớp = 1 phần tử của mảng ;))
mỗi phần tử có một giá trị = số hs của 1 lớp
 
Last edited by a moderator:

Thành Nhân 2

Học sinh mới
Thành viên
7 Tháng mười hai 2017
6
1
6
26
TP Hồ Chí Minh
Đại học Y khoa Phạm Ngọc Thạch
cho mình hỏi đang trong chạy chương trình của pascal muốn thoát ra (trở lại) phần nhập dữ liệu thì làm cách nào
 
  • Like
Reactions: kingsman(lht 2k2)
Top Bottom