chương 1 : giỚi thiỆu vỀ ngôn ngỮ lẬp trình · web viewbước 2 :...
TRANSCRIPT
Tin học đại cương
MỤC LỤC
NGÔN NGỮ LẬP TRÌNH PASCAL..............................................................................................31. GIỚI THIỆU................................................................................................................................31.1 XUẤT XỨ.................................................................................................................................31.2 CÁC TẬP TIN CHÍNH CỦA NGÔN NGỮ PASCAL.............................................................31.3 KHỞI ĐỘNG VÀ THOÁT KHỎI TURBO PASCAL..............................................................4
1.3.1 Khởi động:........................................................................................................................41.3.2 Thoát khỏi:........................................................................................................................4
1.4 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL........................................................41.4.1 Bộ ký tự:...........................................................................................................................41.4.2 Từ khoá:............................................................................................................................41.4.3 Tên chuẩn:........................................................................................................................51.4.4 Tên (định danh) :..............................................................................................................51.4.5 Dấu chấm phẩy:................................................................................................................51.4.6 Lời giải thích:....................................................................................................................5
1.5 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH PASCAL....................................51.5.1 Phần tiêu đề:.....................................................................................................................61.5.2 Phần khai báo dữ liệu và chương trình con:.....................................................................61.5.3 Thân chương trình:...........................................................................................................6
1.6 CÁC BƯỚC CƠ BẢN KHI VIẾT MỘT CHƯƠNG TRÌNH...................................................71.7 CÁC KIỂU DỮ LIỆU CƠ BẢN.............................................................................................10
1.7.1 Kiểu số nguyên...............................................................................................................101.7.2 Kiểu số thực......................................................................................................................111.7.3 Kiểu ký tự.........................................................................................................................121.8.4 Kiểu logic..........................................................................................................................12
1.8 HẰNG,BIẾN, BIỂU THỨC, CÂU LỆNH..............................................................................141.8.1 Hằng:.................................................................................................................................141.8.2 Biến:..................................................................................................................................141.8.3 Biểu thức:..........................................................................................................................151.8.4 Câu lệnh:...........................................................................................................................151.8.5 Một số câu lệnh đơn cơ bản :............................................................................................16
1.8.5.1 Lệnh gán :..................................................................................................................161.8.5.2 Câu lệnh nhập/xuất....................................................................................................17
Ví dụ : Viết chương trình nhập vào 2 số nguyên a,b. Tính tích, thương của hai số nguyên a,b đó.18
1.9 MỘT SỐ LỆNH DÙNG ĐỂ TRÌNH BÀY MÀN HÌNH........................................................181.9.1 Toạ độ màn hình:..............................................................................................................181.9.2 Các lệnh sử dụng màu sắc :..............................................................................................181.9.3 Các lệnh khác :..................................................................................................................19Ví dụ : Nhập vào một góc x (tính bằng độ). Tính sin(x),cos(x) và xuất kết quả với màu đỏ....19
MỘT SỐ PHÍM CHỨC NĂNG KHI SOẠN THẢO..............................................................212 : CÁC CẤU TRÚC RẼ NHÁNH...............................................................................................24
1
Tin học đại cương
2.1 CẤU TRÚC IF … THEN …ELSE….....................................................................................24Ví dụ : Nhập vào 2 số nguyên a, b. Tìm số lớn nhất trong 2 số......................................26
2.2 CẤU TRÚC CASE ... OF........................................................................................................27Ví dụ 1: Nhập vào 1 số nguyên a, cho biết a là số chẵn hay lẻ......................................27
3 : CẤU TRÚC LẶP......................................................................................................................313.1 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP XÁC ĐỊNH FOR :....................................................313.2 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP KHÔNG XÁC ĐỊNH :.............................................33
3.2.1 CẤU TRÚC WHILE :......................................................................................................333.2.2 CẤU TRÚC REPEAT … UNTIL….................................................................................35
2
Tin học đại cương
NGÔN NGỮ LẬP TRÌNH PASCAL
1. GIỚI THIỆU
1.1 XUẤT XỨ
Ngôn ngữ lập trình Pascal do 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 đầu những năm 1970, với tên Pascal để tưởng nhớ đến
Blaise Pascal - nhà toán học, triết học nổi tiếng của Pháp ở thế kỷ 17, người đã chế tạo ra
máy tính cơ khí đầu tiên của nhân loại.
Ban đầu Pascal được thiết kế chỉ nhằm phục vụ cho việc giảng dạy cho các sinh
viên về phương pháp lập trình, nhưng ngôn ngữ này đã thành công rực rỡ trong mọi ứng
dụng lập trình và đã ảnh hưởng sâu sắc đến các ngôn ngữ ra đời sau nó trong tư duy lập
trình cấu trúc.
Ngôn ngữ lập trình Pascal chuẩn được nhiều hãng phát triển, đặc biệt là hãng
Bordland (Mỹ) với phần mềm Turbo Pascal. Phiên bản mới nhất là Turbo Pascal 7.0
1.2 CÁC TẬP TIN CHÍNH CỦA NGÔN NGỮ PASCAL
Một bộ Turbo Pascal 7.0 gồm nhiều tập tin, dưới đây chỉ liệt kê một số tập tin quan
trọng nhất cùng với chức năng của nó :
Turbo.Exe : Soạn thảo, dịch và liên kết chương trình theo menu.
Turbo.Tpl : Tập tin thư viện, nơi lưu các thủ tục, hàm được định nghĩa sẵn.
Graph.Tpu : Tập tin thư viện đồ hoạ.
Turbo.Hlp : Cung cấp các giúp đỡ khi lập trình.
*.Chr : Chứa các font chữ trong chế độ đồ hoạ.
*.Bgi : Chứa các font màn hình.
3
Tin học đại cương
1.3 KHỞI ĐỘNG VÀ THOÁT KHỎI TURBO PASCAL1.3.1 Khởi động:
- Hệ điều hành MSDOS : Chuyển vào thư mục chứa các tập tin chính ở trên, sau đó
gõ vào lệnh : Turbo (enter)
- Hệ điều hành Windows : nhấn đúp chuột vào biểu tượng Turbo Pascal 7.0 trên
desktop.
1.3.2 Thoát khỏi:
Nhấn ALT+ X hoặc nhấn F10 hay chọn menu File/EXIT.
1.4 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL1.4.1 Bộ ký tự:
Ngôn ngữ Pascal được xây dựng từ một bộ ký tự, các ký tự đó được kết hợp lại
thành các từ, các từ tạo thành các câu, tất cả đều tuân theo một cú pháp rất chặt chẽ.
Bộ ký tự 26 chữ cái la tinh (chữ hoa A,B, ..., Z, chữ thường a, b,…, z)
Ký tự gạch nối _
Bộ chữ số thập phân 0, 1, 2, …,9
Các ký hiệu toán học : +, -, *, /, =, <, >, (,) …
Các ký hiệu khác : [, ], !, #, $, @, & , ;, …
1.4.2 Từ khoá:
Là các từ riêng, đã được định nghĩa sẵn của Pascal, có ngữ nghĩa đã được xác
định, không được dùng nó vào các việc khác.
Từ khoá chung : PROGRAM, BEGIN, END, PROCEDURE, FUNCTION
Từ khoá để khai báo: CONST, LABEL, VAR, TYPE, ARRAY, STRING, …
Từ khoá của lệnh rẽ nhánh : IF, THEN, ELSE, CASE, OF
Từ khoá của lệnh lặp : FOR, TO, DOWNTO, WHILE, DO, REPEAT, UNTIL
Từ khoá điều khiển : EXIT, GOTO, BREAK
Từ khoá là toán tử : AND, OR, NOT, DIV, MOD, IN,. . .
4
Tin học đại cương
1.4.3 Tên chuẩn:
Là tên được định nghĩa sẵn trong Pascal, nhưng người dùng có thể định nghĩa lại
nếu muốn.
Pascal có các tên chuẩn như sau: boolean, integer, char, real, word, byte, text,
false, true, maxint, writeln, readln, abs, arctan, chr, sin, eof, eoln, exp, ln, ord, round, trunc,
sqr, sqrt, pred, succ, reset, …
1.4.4 Tên (định danh) :
Khi lập trình ta thường phải đặt tên để phân biệt các biến, hằng, kiểu, tên chương
trình con, …
Quy tắc đặt tên trong Pascal :
Có thể dùng ký tự chữ, số, dấu gạch nối, nhưng phải bắt đầu bằng một ký tự chữ.
Không phân biệt chữ hoa chữ thường.
Nên đặt tên ngắn gọn nhưng dễ hiểu và gợi nhớ.
Tên không được trùng nhau và trùng từ khóa.
- Ví dụ : các tên không hợp lệ : 1ABC, #DEL, ARRAY, DEL TA
1.4.5 Dấu chấm phẩy:Được dùng để ngăn cách các câu lệnh trong chương trình.
1.4.6 Lời giải thích:
Để chương trình dễ đọc, thường người lập trình phải thêm lời giải thích vào trong
chương trình. Lời giải thích được đặt giữa cặp dấu (* và *) hoặc giữa cặp dấu ngoặc móc
{ và }. Lời giải thích có thể đặt ở bất kỳ vị trí nào trong chương trình mà không ảnh hưởng
đến các phần khác.
1.5 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH PASCAL
Một chương trình Pascal đầy đủ gồm 3 phần sau :
5
PROGRAM tên_chương_trình; (* Dòng tiêu đề *)
Tin học đại cương
1.5.1 Phần tiêu đề:
Luôn bắt đầu bằng từ khoá program, tiếp theo là tên_chương_trình (tự đặt) và kết
thúc bằng một dấu chấm phẩy (;).
Phần này không bắt buộc phải có.
1.5.2 Phần khai báo dữ liệu và chương trình con:
Dùng để khai báo tất cả các dữ liệu, cũng như các thủ tục và hàm được sử dụng
trong chương trình.Phần này không bắt buộc phải có.
1.5.3 Thân chương trình:
Được giới hạn bởi cặp từ khóa BEGIN và END (sau END phải có dấu chấm), chứa
tất cả các lệnh để xử lý các dữ liệu đã được mô tả trong phần khai báo.Phần này luôn bắt
buộc phải có.
Ví dụ : 1 chương trình đơn giản : in ra màn hình câu “Xin chao”
BEGIN
Write (‘Xin chao’);
END
6
(* Phần khai báo dữ liệu và chương trình con *)USES CRT; { Khai báo thư viện cần sử dụng } VAR … { Khai báo các biến }CONST … { Khai báo các hằng }LABEL … { Khai báo nhãn }TYPE … { Mô tả các kiểu dữ liệu mới }PROCEDURE … { Khai báo các thủ tục }FUNCTION … { Khai báo các hàm }
(* Thân chương trình *)BEGIN
{ Các câu lệnh cần thực hiện }END.
Tin học đại cương
1.6 CÁC BƯỚC CƠ BẢN KHI VIẾT MỘT CHƯƠNG TRÌNH - Bước 1 : Soạn thảo chương trình : dùng chương trình soạn thảo văn bản (editor) để
viết chương trình (chương trình nguồn – source program), và lưu dưới dạng file .pas.
- Bước 2 : Dịch và kết nối chương trình : bao gồm 2 quá trình :
o Gọi chương trình dịch (compiler) để dịch chương trình nguồn sang mã máy (tập tin .obj) . Nếu có những lỗi cú pháp – syntax error (ví dụ : ghi sai từ khóa BEGIN thành BEGAN, sau câu lệnh thiếu dấu chấm phẩy, thiếu dấu chấm sau end để kết thúc chương trình …) thì chương trình dịch sẽ báo lỗi, ta phải quay lên bước 1 để chỉnh sửa.
o Nếu chương trình không có lỗi cú pháp, sẽ được kết nối (linker) với các thư viện chứa các hàm được định nghĩa sẵn cần dùng.
- Bước 3 : Chạy chương trình và kiểm tra kết quả : nếu kết quả nhận được là sai thì đây là những lỗi logic, lỗi do thuật giải cần quay lại bước 1 để chỉnh sửa lại thuật giải của bài toán.
CÁC CÁCH DIỄN ĐẠT THUẬT GIẢI BÀI TOÁN :
Chúng ta hãy lấy ví dụ về việc xây dựng thuật giải tìm ước số chung lớn nhất của hai số a và b (Thuật giải Ơ clid).
Có 3 cách diễn đạt thuật giải như sau.
Cách 1: Liệt kê các bước bằng lời.Bước 1 : Đọc a, b.
Bước 2 : Chia a cho b, được số dư là r.
Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước 4.
Nếu r ≠ 0 thì gán giá trị b cho b a, gán giá trị r cho b và quay lại bước 1.
Bước 4 : In ra kết quả.
Bước 5 : Kết thúc.
Cách 2 : Diễn đạt bằng lưu đồ:Các hình cơ bản để xây dựng lưu đồ thuật giải là :
7
Nhập/xuất dữ liệu(Read/Write)
Begin
Bắt đầu thuật giải
End
Kết thúc thuật giải
Tin học đại cương
Ví dụ :
Cách 3 : Bằng ngôn ngữ lập trình.
8
A
Thực hiệncông việc A
A
Gọi chương trình con A
Một phép thử B: tùy thuộc vào trạng thái của B là đúng
hay sai mà rẽ nhánh thích hợp
BSai
Đúng
a:=b, b:=r
Begin
Đọc a và b
Chia a cho bSố dư r
R = 0 ?
yes
no
USCLN:=b
In ra USCLN
End
Tin học đại cương
Ngôn ngữ thuật giải là những ngôn ngữ lập trình hướng tời giải quyết vần đề bằng thuật giải, nghĩa là bằng trình tự các lệnh. Thí dụ Pascal là một trong các ngôn ngữ thuật giải, nghĩa là nó tự diễn tả thuật giải cần tiến hành. Đó cũng là một ưu điểm của Pascal giúp cho người lập trình cáo ngay tư duy xây dựng thuật giải mà không cần dùng lưu đồ.
Var
a, b, r : integer;
Begin
Read(a); Read(b); {Đọc a và b)
r := a mod b; {số dư r)
while r <> 0 Do
Begin
a := b;
b := r;
r := a mod b;
End;
USCLN := b;
Write(‘USCLN = ‘,r); {In ra kết quả}
End.
Thuật giải đổi chỗ :
Bài toán thực tế đặt ra là: có 2 cái cốc xanh và đỏ, cốc xanh đựng nước cam, cốc đỏ đựng nước chanh. Làm thế nào để cốc xanh đựng nước chanh còn cốc đỏ đựng nước cam.
Trong máy tính, vấn đề cũng được đặt ra như sau: có hai biến x và y, làm thế nào để hoán vị giá trị của hai biến đó. Biến x là một ô nhớ có địa chỉ nào đấy, có tên do ta đặt cho là x, dùng để chứa các giá trị ta gán vào. Phép gán được kí hiệu là := (trong PASCAL) hoặc = (trong C). Thí dụ: x:=5 nghĩa là ô nhớ x nhận giá trị là 5.
Thuật giải hay các bước phải làm để đổi chỗ giá từ 2 biến là: dùng một ô nhớ hay biến t trung gian để lưu trữ tạm thời :
t := x;
x := y;
y := t;
9
Tin học đại cương
1.7 CÁC KIỂU DỮ LIỆU CƠ BẢN
Dữ liệu là thông tin mà máy tính cần phải xử lý.
Một kiểu dữ liệu là một sự quy định về giá trị cũng như cách biểu diễn và các phép
toán sử dụng được.
Pascal chuẩn cho ta các kiểu đơn giản như sau :
1.7.1 Kiểu số nguyên
Các tập số nguyên được định nghĩa với các từ khoá và miền giá trị như sau:
Từ khoá Miền giá trị Kích thước
integer -32768 … 32767 2 byte
byte 0 … 255 1 byte
word 0 … 65535 2 byte
shortint -128 … 127 1 byte
longint -2147483648 … 2147483647 4 byte
Các phép toán số học đối với số nguyên
Toán tử ý nghĩa
div chia lấy phần nguyên
mod chia lấy phần dư
+ cộng
- trừ
* nhân
/ chia lấy kết quả đầy đủ (kết quả là 1 số thực)
Lưu ý :
Cần chú ý về miền giới hạn của kiểu dữ liệu.
Trong một biểu thức, các phép toán có mức ưu tiên cao hơn (*, /, div và mod) sẽ
được thực hiện trước; các phép toán có mức ưu tiên thấp hơn (+, -) được thực hiện
10
Tin học đại cương
sau. Các phép toán có cùng mức ưu tiên được thực hiện theo thứ tự từ trái qua
phải.
Khi một biểu thức có chứa các biểu thức con nằm trong ngoặc, thì các biểu thức
con này được thực hiện trước. Nếu có nhiều ngoặc lồng nhau thì các biểu thức con
trong cùng được thực hiện trước.
1.7.2 Kiểu số thực
Kiểu số thực (thuộc tập R trong toán học) được khai báo bằng từ khoá REAL, miền
giá trị của kiểu số thực là -1.7*10-38 đến 1.7*1038.
Các phép toán số học : +, - , *, /
Biểu diễn số thực :
- Dạng thập phân thông thường : dùng dấu chấm để ngăn cách phần nguyên và phần
thập phân.
Ví dụ : 2.95 , 6.0, -31.596314, - 0.00086 …
- Dạng có phần mũ : gồm 2 phần là phần định trị và phần mũ (số mũ của cơ số 10).
Ví dụ : 2.950000E +00, 6.000000E+ 00, -3.1596314E+01, -8.600000E-04
Còn gọi là kiểu dấu chấm phẩy động :
2.950000E + 00 = 0.295000E+01 = 0.029500E + 02 …
Các hàm số học chuẩn (dùng cho dữ liệu kiểu số nguyên và số thực) :
Hàm Ý nghĩa Kiểu tham số Kiểu hàm
abs(x) Tính trị tuyệt đối của x Số nguyên, thực Cùng kiểu tham
số
arctan(x) Hàm ngược của tan(x), tính bằng
radian
Số nguyên, thực Số thực
cos(x) Cos(x) tính bằng radian Số nguyên, thực Số thực
exp(x) ex Số nguyên, thực Số thực
11
Tin học đại cương
ln(x) Log cơ số e của x Số nguyên, thực Số thực
round(x) Làm tròn x Số thực Số nguyên
sin(x) Sin(x) tính bằng radian Số nguyên, thực Số thực
sqr(x) x2 Số nguyên, thực Cùng kiểu tham số
sqrt(x) Căn bậc hai của x Số nguyên, thực Số thực
trunc(x) Lấy phần nguyên của x (bỏ phần lẻ) Số thực Số nguyên
odd(x) Cho giá trị true nếu x là số lẻ Số nguyên Boolean
1.7.3 Kiểu ký tự
Được khai báo bằng từ khoá CHAR.
Kiểu ký tự gồm các ký tự của bảng mã ASCII (256 ký tự).
Một ký tự được biểu diễn trong cặp dấu nháy đơn ’ ’.Các hàm liên quan :
ord(‘x’) : Trả về số thứ tự tương ứng với ký tự x trong bảng mã ASCII.chr(x) : Trả về ký tự tương ứng với thứ tự x trong bảng mã ASCII.
Ví dụ :Ord(‘A’)=65
Ord(‘0’) = 48
Chr(65)=’A’
Chr(48) = ‘0’
1.8.4 Kiểu logic
Kiểu Logic là kiểu chỉ nhận 1 trong 2
giá trị là đúng(True) hoặc sai (False), được
khai báo bằng từ khoá Boolean.
Các phép toán so sánh cho kết quả là
một kiểu boolean :
Toán Định nghĩa
< Nhỏ hơn (hoặc đứng trước)
> Lớn hơn (hoặc đứng sau)
= Bằng
<= Nhỏ hơn hoặc bằng
>= Lớn hơn hoặc bằng
< > Khác nhau
12
Tin học đại cương
Các phép toán trên kiểu boolean :
Phép phủ định Not
Phép hội and
Phép tuyển or
Nếu p và q là các biểu thức logic thì các phép toán trên p và q cho ta kết quả
như sau :
P not p p q p or q p q p and q q
true false true true true true true true
false true true false true true false false
false true true false true false
false false false false false false
Ta cũng có thể xây dựng các biểu thức logic phức tạp hơn bằng cách kết hợp
các toán logic trên.
Ví dụ :
3>5 : false
13
Tin học đại cương
5<=9 : true
‘a’ > ‘z’ : false
‘9’ <= ‘B’ : true
false < true : true
‘c’ <> ‘C’ : true
1.8 HẰNG,BIẾN, BIỂU THỨC, CÂU LỆNH 1.8.1 Hằng:
- Định nghĩa :
- Hằng là đại lượng có giá trị không thay đổi. Một hằng có thể là số, kí tự, xâu ký tự
hay là kiểu logic.
- Cách khai báo:
CONST
Tên hằng = giá trị của hằng;
- Ví dụ :
Const
PI=3.14;
N=100;
GIOI = ‘A’;
DUNG = FALSE;
1.8.2 Biến:
- Định nghĩa : Biến là đại lượng có giá trị có thể thay đổi trong khi chương trình được
thực hiện.
- Cách khai báo :
VAR
Tên_biến_1 : kiểu_dữ_liệu_1;
Tên_biến_2 : kiểu_dữ_liệu_2;
14
Tin học đại cương
- Ví dụ :
Var a, b: integer;
C:real;
1.8.3 Biểu thức:
- Định nghĩa : Biểu thức là một công thức tính toán bao gồm các phép toán và toán
hạng (hằng, biến, hàm) và các dấu ngoặc. Các toán hạng phải tương thích với nhau
về kiểu.
- Có 2 loại biểu thức :
Biểu thức số học : có giá trị là 1 số (số nguyên hay thực).
Biểu thức logic : có giá trị là là 1 kiểu BOOLEAN (TRUE hay FALSE).
- Thứ tự ưu tiên : Khi tính giá trị của một biểu thức, ngôn ngữ pascal quy ước thứ tự
ưu tiên của các phép toán từ cao đến thấp như sau:
phép gọi hàm
Not
*,/, div, mod, and
+, -, or, xor
<, >, =, <=, >=, < >
1.8.4 Câu lệnh:
- Là những công việc mà chương trình cần phải thực hiện để xử lý các dữ liệu đã
được khai báo. Các câu lệnh cách nhau bằng dấu chấm phẩy (;).
- Có 2 loại câu lệnh :
Lệnh đơn giản : là những lệnh đơn, không chứa các lệnh khác.
Ví dụ : write, writeln, read, readln, goto…
Lệnh có cấu trúc (lệnh hợp thành hay lệnh ghép) : bao gồm nhiều lệnh khác
(lệnh đơn hay lệnh ghép khác) bên trong.
Ví dụ : if … then …else …,
15
Tin học đại cương
case…of…,
for …to…do …,
repeat…until…,
while…do…
1.8.5 Một số câu lệnh đơn cơ bản :1.8.5.1 Lệnh gán :
- Là lệnh dùng để gán giá trị cho các biến, ký hiệu :=
- Cú pháp :
tên biến := biểu thức;
Trong đó :
Vế trái của phép gán chỉ có thể là 1 biến duy nhất.
Biểu thức có thể là một hằng, một biến khác đã được gán giá trị trước đó,
hay là một biểu thức.
Chú ý: tính tương thích về kiểu dữ liệu của 2 vế : vế trái và vế phải phải cùng
kiểu dữ liệu. Có trường hợp ngoại lệ là 1 biến thực (vế trái) có thể nhận 1 giá trị
nguyên(vế phải), khi đó giá trị nguyên sẽ được chuyển đổi thành giá trị thực
tương ứng. Nhưng ta không thể làm ngược lại, tức là gán một giá trị thực cho
biến nguyên.
Ví dụ : Var a,b : integer;
c : real;Begin
A =5; {đúng}C=A; {đúng}B=C+3; {sai}
End.
1.8.5.2 Câu lệnh nhập/xuấtCác lệnh xuất dữ liệu ra màn hình
Write (‘x’); Xuất ra màn hình ký tự x
Write (x); Xuất ra màn hình giá trị của biến x
16
Tin học đại cương
Write (x:m); Dành m vị trí để xuất giá trị của biến x (x là biến số nguyên hay ký
tự)
Write(x:m:n); Dành m vị trí để xuất giá trị của biến x (x là biến thực), trong đó lấy
n chữ số thập phân.
Writeln; Đưa con trỏ xuống đầu dòng dưới.
Chú ý: Lệnh writeln tương tự như write nhưng sẽ đưa con trỏ xuống đầu
dòng dưới sau khi đã xuất xong dữ liệu.
Ví dụ : Viết chương trình xuất lên màn hình 2 câu sau
Hello Turbo Pascal
Hello Visual Basic
begin
writeln('Hello Turbo Pascal');
writeln('Hello Visual Basic');
readln; {dừng chương trình để xem kết quả, xem xong nhấn enter}
end.
Thay lệnh writeln bằng lệnh write để thấy sự khác nhau.
Các lệnh nhập giá trị cho các biến từ bàn phím :
Read(x); hay Readln(x); : nhập 1 giá trị từ bàn phím đưa vào cho biến x, nhấn enter
để kết thúc việc nhập.
Readln; : Dừng màn hình, nhấn phím enter sẽ tiếp tục.
Ví dụ : Viết chương trình nhập vào 2 số nguyên a,b. Tính tích, thương của hai số nguyên a,b đó.
Program Tinh_tich_thuong_cua_2_so_nguyen;
Var a,b:integer;
tich:integer;
17
Tin học đại cương
Thuong:real;
Begin
Writeln(‘nhap vao so nguyen a=’); readln(a);
Writeln(‘nhap vao so nguyen b=’); readln(b);
Tich:=a*b;
Thuong:=a/b;
Writeln(‘ Tich la ‘, tich:10);
Writeln(‘ Thuong la ‘, thuong:10:2);
Readln;
End.
1.9 MỘT SỐ LỆNH DÙNG ĐỂ TRÌNH BÀY MÀN HÌNHĐể sử dụng được các lệnh trình bày màn hình, cần phải khai báo thư viện CRT .
1.9.1 Toạ độ màn hình:
- Toạ độ màn hình được biểu diễn bởi 2 giá trị : x chỉ vị trí cột (từ 1 đến 80) và y chỉ vị
trí dòng (từ 1 đến 25).
- Ta có thể chuyển con trỏ tới vị trí mới trên màn hình bằng lệnh : gototxy ( x, y )
whereX : cho kết quả là một số nguyên là vị trí cột;
whereY : cho kết quả là một số nguyên là vị trí hàng.
1.9.2 Các lệnh sử dụng màu sắc :
0: Black 1: Blue 2: Green 3: Cyan
4: Red 5: Magenta 6: Brown 7: LightGray
8: DarkGray 9: LightBlue 10: LightGreen 11: LightCyan
12: LightRed 13: LightMagenta 14: Yellow 15: White
- Lệnh chọn màu chữ: Textcolor(color)
Ví dụ : Textcolor(red) hay Textcolor(4)
18
Tin học đại cương
- Lệnh chọn màu nền: Textbackground(color)
Ví dụ : Textbackground(Blue) hay Textbackgound(1)
- Để làm kí tự nhấp nháy, ta cộng vào sau màu nét hằng chuẩn blink.
Ví dụ : textcolor(red + blink) hay Textcolor(4+blink)
1.9.3 Các lệnh khác :
- clrscr : lệnh xoá sạch màn hình, đưa con trỏ về góc trên bên trái màn hình.
- readkey : đọc một ký tự từ bàn phím(không cần nhấn enter để kết thúc).
Ví dụ : ch:=Readkey : nhập một ký tự từ bàn phím và lưu vào biến ch.
- keypressed : trả về true nếu có một phím được nhấn.
- random(n) : cho một số nguyên ngẫu nhiên, có giá trị nằm trong khoảng từ 0 đến n-
1.
Ví dụ : Nhập vào một góc x (tính bằng độ). Tính sin(x),cos(x) và xuất kết quả với màu đỏ.
Uses crt;
Var x, radian : real;
Begin
Clrscr;
Readln(x);
Radian:=x*pi/180;
Textcolor(4);
Writeln('sin(x) =',sin(radian):10:2);
Writeln('cos(x) =',cos(radian):10:2);
Readln;
End.
19
Tin học đại cương
MỘT SỐ PHÍM CHỨC NĂNG KHI SOẠN THẢO
File new mở file mới
File open ( F3) mở file đã có
File save (F2) lưu file đang soạn thảo
File save as lưu file với tên khác
File exit (alt-X) thoát khỏi pascal
Alt + F3 đóng cửa sổ hiện hành
RunRun (CTRL+F9)chạy chương tình
Page up chuyển lên trang màn hình trước
Page down chuyển xuống trang màn hình sau
CTRL+ Page up chuyển đến đầu chương trình
CTRL+ Page down chuyển đến cuối chương trình
Home về đầu dòng hiện hành
End về cuối dòng hiện hành
Insert thay đổi chế độ viết chèn/viết đè
Delete xoá một ký tự tại vị trí hiện hành của con trỏ
Backspace xóa một ký tự trước vị trí hiện hành của con trỏ
CTRL+Y xoá dòng hiện hành
CTRL+Q+Y xoá từ vị trí con trỏ đến cuối dòng
CTRL+K+B đánh dấu đầu khối
CTRL+K+k đánh dấu cuối khối
CTRL+K+C sao chép khối đến vị trí hiện hành của con trỏ
CTRL+K+V di chuyển khối đến vị trí hiện hành của con trỏ
CTRL+K+H Bỏ đánh dấu khối
Chú ý:
20
Tin học đại cương
- Có thể đánh dấu khối bằng cách dùng shift + phím mũi tên.
- Phím CTRL + insert để đưa khối vào bộ nhớ và Shift + insert để dán khối tại vị trí
hiện hành của con trỏ.
21
Tin học đại cương
BÀI TẬP
1.1. Tạo 3 số nguyên ngẫu nhiên trong khoảng từ 1 đến 100, tính tổng 3 số đó.
1.2. Nhập số tiền a tính bằng USD và tỉ giá T. Hãy đổi a ra VND theo tỷ giá T.
1.3. Nhập toạ độ 3 điểm A,B,C lần lượt là (xa,ya), (xb,yb), (xc,yc). Hãy tính diện tích, chu vi
tam giác ABC.
Ví dụ : nếu toạ độ 3 điểm là (0,0), (3,0); (0,4) thì diện tích tam giác là 6 và chu vi là 12.
1.4. Viết chương trình nhập vào canh của hình vuông. Hãy tính dien tich, chu vi, đường
chéo của hình vuông đó.
1.5. Nhập một số tự nhiên n có 3 chữ số, đảo ngược một số đó.
Ví dụ : nếu số nhập vào là 327 thì kết quả xuất ra là 723
1.6. Biết tổng số giây là s , hãy chuyển đổi s sang giờ, phút, giây.
Ví dụ : s = 3700 thì đổi thành dạng 1giờ 1phút 40giây.
1.7. Viết chương trình nhập vào các cột điểm hệ số 1, điểm hệ số 2 và điểm thi hết môn.
Hãy cho biết điểm trung bình kiểm tra và điểm trung bình môn, biết :
điểm trung bình kiểm tra = (hệsố1 + 2* hệ số2)/3
điểm trung bình môn = (điểm trung bình kiểm tra+điểm thi)/2
22
Tin học đại cương
2 : CÁC CẤU TRÚC RẼ NHÁNH
2.1 CẤU TRÚC IF … THEN …ELSE…
Cú pháp 1: IF <điều_kiện> THEN
<công_việc>;
Trong đó
<điều_kiện> là một biểu thức logic (trả về trị true hoặc false).
Nếu <điều_kiện> là true, <công_việc> sẽ được thực hiện, ngược lại
<công_việc> không thực hiện.
- Lưu đồ thực hiện :
Ví dụ : Giải phương trình bậc 2 : ax2 + bx + c = 0. (a<>0)
var a, b, c,delta, x1, x2:real;
begin
readln(a,b,c);
delta:=b*b-4*a*c;
if delta<0 then
writeln('phuong trinh vo nghiem');
if delta=0 then
23
Begin
điều_kiện
công_việc
TRUE
End
FALSE
Tin học đại cương
writeln('phuong trinh co nghiem kep x1= x2= ',-b/(2*a):6:2);
if delta>0 then
begin
x1:=(-b+sqrt(delta))/(2*a);
x2:=(-b-sqrt(delta))/(2*a);
writeln('x1=',x1:6:2);
writeln('x2=',x2:6:2);
end;
readln;
end.
Chú ý : Phần công việc cần thực hiện sau then và sau else trong cấu trúc if chỉ bao
gồm 1 lệnh. Nếu công việc cần thực hiện bao gồm từ 2 lệnh trở lên, thì phải dùng
cặp từ khóa begin và end để nhóm các lệnh đó lại thành 1 lệnh phức.
Cú pháp 2 : IF <điều_kiện> THEN
<công_việc_1>
ELSE
<công_việc_2>;
Nếu <điều_kiện> nhận giá trị true thì <công_việc_1> được thực hiện ngược lại thì
<công_việc_2> sẽ được thực hiện
- Lưu đồ thực hiện :
24
Begin
điều_kiện
công_việc_1
TRUE
End
FALSE
công_việc_2
Tin học đại cương
Chú ý: trước else không dùng dấu chấm phẩy.
Ví dụ : Nhập vào 2 số nguyên a, b. Tìm số lớn nhất trong 2 số.
Var a, b, max : integer;
Begin
readln(a,b,c);
if a>b then max:=a
else max:=b;
writeln('so lon nhat la ',max);
End.
Có thể kết hợp nhiều cấu trúc if…then… và if…then…else…lại với nhau.Ví dụ : Nhập vào 1 tháng (từ 1 đến 12), cho biết số ngày của tháng.
Var thang, so_ngay : byte;
Begin
Write(‘Nhap vao 1 thang’);
Read(thang);
If ( thang 2) then so_ngay:= 28;
Else
If (thang =1) or( thang=3) or (thang=5) or (thang=7) or (thang=8)
or (thang=10) or (thang=12) then
so_ngay:= 31
Else so_ngay:=30;
Write(‘So ngay cua thang ’, thang, ‘la:’, so_ngay);
End.
25
Tin học đại cương
2.2 CẤU TRÚC CASE ... OF
Tuy if...then…else… đủ để thực hiện hầu như bất kỳ cấu trúc có nhiều lựa chọn
nào, nhưng trong một số trường hợp, cấu trúc case...of… tiện lợi và làm chương trình
trở nên rõ ràng, dễ đọc hơn. Ta sẽ xem xét cấu trúc này dưới đây.
Cú pháp:
CASE <biểu_thức> OF
Danh_ sách_hằng_1 : <công_việc_1>;
Danh_ sách_ hằng_2 : <công_việc_2>;
....
Danh_ sách_ hằng_n : <công_việc_n>;
ELSE
<công_việc_0>;
END;
Trong đó
<biểu_thức> có thể nhận giá trị kiểu nguyên, kiểu logic, hay kiểu kí tự, nhưng
không thể là kiểu số thực.
Danh_ sách_ hằng_i là một hay nhiều giá trị có thể của biểu thức.
Đầu tiên, <biểu_thức> được tính toán, nếu giá trị của nó nằm trong Danh_
sách_ hằng_i thì <công_việc_i> tương ứng với nó sẽ được thực hiện. Nếu
giá trị của biểu thức không thuộc danh sách hằng từ 1 đến n đã được liệt kê
thì <công_việc_0> sau từ khoá else (nếu có) sẽ được thực hiện.
Ví dụ 1: Nhập vào 1 số nguyên a, cho biết a là số chẵn hay lẻ.
Var a:integer;
Begin
Write(‘Nhap vao so nguyen a:’);
Readln(a);
26
Tin học đại cương
If a<0 then write('khong hop le')
Else
case (a mod 2) of
0 : write(a,' la so chan');
1 : write(a,' la so le');
end;
End.
Ví dụ 2: Nhập vào 1 tháng (từ 1 đến 12), cho biết số ngày của tháng.
var thang,so_ngay:byte;
begin
readln(a);
case thang of
1, 3, 5, 7, 8, 10,12:so_ngay:=31;
4, 6, 9, 11:so_ngay:=30;
2:so_ngay:=28;
end;
writeln('so ngay la : ' ,so_ngay);
readln;
end.
27
Tin học đại cương
BÀI TẬP
2.1 Viết chương trình nhập điểm (số thực) và phân loại học sinh theo tiêu chuẩn sau:
9 Điểm TB loại A
7 Điểm TB < 9 B
5 Điểm TB < 7 C
Điểm TB < 5 D
2.2 Nhập vào chỉ số điện mới, và chỉ số điện cũ, tính tiền điện hàng tháng với cách thức
tính tiền điện như sau:
100KW đầu tiên giá 500 đồng/KW
50KW tiếp theo giá 650 đồng/KW
100KW thứ 151 trở lên giá 900 đồng/KW
Tiền phụ thu tiền điện mỗi tháng là 10%.
2.3 Nhập vào một số dương thuộc kiểu integer. Hỏi số đó có bao nhiêu chữ số ?
2.4 Tìm giá trị lớn nhất của 3 số thực a, b, c nhập từ bàn phím.
2.5 Nhập vào 4 số nguyên a,b,c,d. Tìm giá trị lớn nhì của 4 số trên.
2.6 Nhập vào thứ của các ngày trong tuần (2,3,4,5,6,7,8) và xuất ra màn hình tên tiếng Anh
của ngày đó (chẳng hạn nếu số thứ tự nhập vào là 2 thì kết quả là: Monday,…)
2.7 Nhập từ bàn phím hai số nguyên a,b. Nhập vào một ký tự phép toán (+, -, *, /). Hãy
thực hiện phép toán toán đó với 2 số a, b đã nhập.
2.8 Nhập vào một ký tự, hãy cho biết ký tự đó là ký tự phép toán (+, -, *, / ) hay là ký tự
chữ (từ a đến z) hay là ký tự số (từ 0 đến 9) hay không thuộc 3 loại kể trên ?
2.9 Viết chương trình trò chơi đoán số như sau:
1. Máy tạo ra một số ngẫu nhiên từ 1 đến 100 (gọi là SOMAY)
2. Người chơi nhập vào một số (gọi là SONHAP)
Nếu số nhập lớn hơn số máy thì thông báo
28
Tin học đại cương
“so ban nhap lon hon so may”
Nếu số nhập nhỏ hơn số máy thì thông báo
“so ban nhap nho hon so may”
3.Trò chơi sẽ kết thúc nếu bạn đã đoán đúng số máy (SONHAP =SOMAY) hoặc bạn
đã đoán sai ba lần. Trường hợp bạn đoán không đúng thì in ra câu: “Bạn đã thua rồi” và
hiển thị số mà máy đã tạo(SOMAY), ngược lại thì in ra câu “Chúc mừng, bạn đã thắng”.
29
Tin học đại cương
3 : CẤU TRÚC LẶP
3.1 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP XÁC ĐỊNH FOR :
Cấu trúc lặp for được dùng khi ta biết trước số lần cần lặp lại cần 1 biến để đếm
số lần đã thực hiện.
Cú pháp 1:
FOR <biến_ đếm>:= <cận_đầu > TO <cận_cuối> DO
<công_việc>;
Hoạt động : Đầu tiên <biến_đếm> nhận giá trị là <cận_đầu>. Nếu <biến_đếm> <=
<cận_cuối> thì <công_việc> được thực hiện, sau đó <biến_đếm> tự động tăng lên
một giá trị và vòng lặp cứ thế tiếp tục đến khi nào <biến_đếm> lớn hơn <cận_cuối>
thì vòng lặp kết thúc.
Chú ý: <biến_đếm>, <cận_đầu>, <cận_cuối> là dữ liệu thuộc kiểu đếm được.
Ví dụ 1: Xuất 5 lần dòng chữ sau lên màn hình: Hello Turbo Pascal
uses crt;
var I:byte;
Begin
30
Begin
biến_đếm:=cận_đầu
biến_đếm > cận_cuối
công_việc
biến_đếm:=biến_đếm+1
TRUE End
FALSE
Tin học đại cương
For I:=1 to 5 do
Writeln(‘Hello Turbo Pascal’);
End.
Ví dụ 2: Xuất ra màn hình các số từ 1 đến 100, mỗi dòng 10 số.
uses crt;
var I:byte;
Begin
For I:=1 to 100 do
Begin
Write(i:3);
If (I mod 10=0) then Writeln;
End;
End.
Có thể kết hợp các cấu trúc lặp for với nhau hay với các cấu trúc rẽ nhánh đã học :
if…then…else…, case…of…
Cú pháp 2:
FOR <biến_ đếm>:= <cận_đầu > DOWNTO <cận_cuối> DO
<công_việc>;
Hoạt động : Đầu tiên <biến_đếm> nhận giá trị là <cận_đầu>. Nếu <biến_đếm> >=
<cận_cuối> thì <công_việc> được thực hiện, sau đó <biến_đếm> tự động giảm đi
một giá trị và vòng lặp cứ thế tiếp tục đến khi nào <biến_đếm> nhỏ hơn <cận_cuối>
thì vòng lặp kết thúc.
Ví dụ 1: Tính tổng S= 1 + 2 +. . . + n. với n là số nguyên dương nhập từ bàn phím
31
Tin học đại cương
uses crt;
var i,n,s:integer;
begin
clrscr;
readln(n);
s:=0;
for i:=n downto 1 do
s:=s+i;
writeln('tong la ',s);
readln;
end.
Ví dụ 2 : In ra màn hình các ký tự chữ cái theo thứ tự đảo ngược :
uses crt;
var I:char;
Begin
For I:=’z’ downto ‘a’ do
Write(I : 3);
End.
3.2 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP KHÔNG XÁC ĐỊNH :
Được sử dụng khi số lần cần thực hiện là không biết trước.
3.2.1 CẤU TRÚC WHILE :
Cú pháp :
WHILE <điều_kiện> DO
32
Tin học đại cương
<công_việc>;
Hoạt động : Đầu tiên <điều_kiện> được kiểm tra. Nếu <điều_kiện> đúng
(TRUE) thì <công_việc> được thực hiện, sau đó quay lại kiểm tra <điều_kiện>,
vòng lặp cứ như thế cho đến khi nào <điều_kiện> sai (FALSE) thì vòng lặp kết
thúc.
Chú ý:
Trong <công_việc> phải có lệnh để làm cho <điều_kiện> thay đổi giá trị, nếu
không vòng lặp không kết thúc.
Vòng lặp while kiểm tra <điều_kiện> trước nên <công_việc> có thể không
được thực hiện lần nào.
Ví dụ : Lặp lại việc nhập vào hai số nguyên a,b từ bàn phím cho đến khi nào gặp hai
số mà tích của chúng là số chẵn thì dừng lại. Xuất kết quả a, b, a*b lên màn hình.
Uses crt;
Var a, b : integer;
Begin
Clrscr;
Write(‘Nhap vao 2 so a,b :’);
Readln(a,b);
33
Begin
điều_kiện
công_việc
TRUE End
FALSE
Tin học đại cương
While (a*b mod 2 =1) do
Begin
Write(‘Nhap lai 2 so a,b :’);
Readln(a,b);
End;
Write(‘Ket qua la : a =’, a, ‘b=’,b, ‘tich=’, a*b);
Readln;
End.
3.2.2 CẤU TRÚC REPEAT … UNTIL…
Cú pháp :
REPEAT
<công_việc>;
UNTIL <điều_kiện>;
Hoạt động : Đầu tiên, <công_việc> được thực hiện và sau đó <điều_kiện> được
kiểm tra. Nếu <điều_kiện> có giá trị sai (FALSE) thì vòng lặp được tiếp tục thực
hiện, và cứ như thế cho đến khi nào <điều_kiện> có giá trị đúng (TRUE) thì vòng
lặp kết thúc.
Ví dụ : Lặp lại việc nhập vào hai số nguyên a,b từ bàn phím cho đến khi nào gặp hai
số mà tích của chúng là số chẵn thì dừng lại. Xuất kết quả a, b, a*b lên màn hình.
Var a,b:integer;
34
Begin
điều_kiện
công_việc
TRUE
End
FALSE
Tin học đại cương
Begin
Repeat
Write(‘Nhap vao 2 so a,b :’);
Readln(a,b);
Until (a*b mod 2 =0);
Write(‘Ket qua la : a =’, a, ‘b=’,b, ‘tich=’, a*b);
Readln;
End.
Chú ý:
Trong <công_việc> phải có lệnh để làm cho <điều_kiện> thay đổi giá trị, nếu
không vòng lặp không kết thúc.
Vòng lặp Repeat…until…thực hiện <công_việc> trước, nên <công_việc> luôn
được thực hiện ít nhất 1 lần.
Ví dụ : Tính tổng các số từ 1 đến N, với N là số nguyên được nhập từ bàn phím
Trường hợp 1 : dùng cấu trúc FOR
Var i,n, tong : integer;
Begin
Write(‘Nhap vao so nguyen N’);
Readln(n);
tong:=0;
For i:=1 to n do
tong :=tong+i;
Write(‘Tong la : ’, tong:5);
35
Tin học đại cương
Readln;
End.
Trường hợp 2 : dùng cấu trúc WHILE
Var i,n, tong : integer;
Begin
Write(‘Nhap vao so nguyen N’);
Readln(n);
tong:=0;
while(i<=n)
begin
tong :=tong+i;
i:=i+1;
end;
Write(‘Tong la : ’, tong:5);
Readln;
End.
Trường hợp 3 : dùng cấu trúc REPEAT…UNTIL…
Var i,n, tong : integer;
Begin
Write(‘Nhap vao so nguyen N’);
Readln(n);
tong:=0;
Repeat
tong :=tong+i;
i:=i+1;
36
Tin học đại cương
Until (i>n);
Write(‘Tong la : ’, tong:5);
Readln;
End.
37
Tin học đại cương
BÀI TẬP
3.1.Viết chương trình nhập vào hai số nguyên M và N. Hãy in ra màn hình hình chữ nhật
rỗng M dòng và N cột, với các cạnh biểu diễn bằng dấu *
Ví dụ : M=4, N=8 ta được hình vẽ sau:
x x x x x x x x
x x
x x
x x x x x x x x
3.2 Viết chương trình nhập vào một số nguyên N. Hãy in ra màn hình hình vuông rỗng có
hai đường chéo với các cạnh biểu diễn bằng dấu *
Ví dụ với N=7
x x x x x x x
x x x x
x x x x
x x x
x x x x
x x x x
x x x x x x x
3.3.Viết chương trình nhập vào một số nguyên N (N <=24), sau đó xuất ra màn hình các
tam giác rỗng có các cạnh biểu diễn bằng dấu *
38
Tin học đại cương
Chẳng hạn với n = 5
3.4. Hãy in ra mã ASCII của các ký tự từ ‘A’ đến ’Z’ và từ ‘a’ đến ‘z’.
3.5. Viết chương trình tính tổng :
S1=1+1/2+1/3…+ 1/N
S2 =1 + (1+2)/2! + (1+2+3)/3! +…+ (1 + 2 +…+ n)/n!
S3=1 + x+ x2 + x3 + …. + xn,với x và n nhập từ bàn phím .
3.6. In ra màn hình bảng cửu chương 2. (từ 2x1 đến 2x10).
3.7. Tìm tất cả các ước số của một số nguyên n cho trước.
3.8. Nhập vào 1 số nguyên n, cho biết n có phải là số nguyên tố hay không.
3.9. Tìm ước số chung lớn nhất của 2 số.
3.10 Tìm tất cả các số nguyên tố trong khoảng từ 2 tới 1015 và in lên màn hình mỗi dòng
10 số.
39
xx xx xx xx x x x x
x x x x xx x
x xx x
x
xx x
x xx x
x x x x x x x x x