You are on page 1of 8

NỘI DUNG GHI BÀI

MÔN TIN HỌC 11

CHƯƠNG I. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
Bài 1: Khái Niệm Lập Trình Và Ngôn Ngữ Lập Trình
- Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật
toán.
- Chương trình đặc biệt có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình thực hiện
được trên máy tính được gọi là chương trình dịch.
Chương trình nguồn  CHƯƠNG TRÌNH DỊCH  Chương trình đích
* Chương trình dịch có 2 loại:
- Thông dịch:
+ Kiểm tra tính đúng đắn của câu lệnh tiếp theo trong chương trình nguồn.
+ Chuyển đổi câu lệnh đó thành một hay nhiều câu lệnh tương ứng trong ngôn ngữ máy.
+ Thực hiện các câu lệnh vừa chuyển đổi được.
- Biên dịch:
+ Duyệt, phát hiện lỗi, kiểm tra tính đúng đắn của các câu lệnh trong chương trình nguồn.
+ Dịch toàn bộ chương trình nguồn thành một chương trình đích có thể thực hiện trên máy và có thể sử dụng lại khi cần thiết.

Bài 2: Các Thành Phần Của Ngôn Ngữ Lập Trình


1. Các thành phần cơ bản
- Mỗi ngôn ngữ lập trình thường có ba thành phần cơ bản: bảng chữ cái, cú pháp và ngữ nghĩa.
a) Bảng chữ cái
- Là tập hợp các ký tự được dùng để viết chương trình.
- Trong Pascal, bảng chữ cái bao gồm các ký tự sau:
+ Chữ cái thường (a…z), chữ cái in hoa (A…Z) trong bảng chữ cái tiếng Anh.
+ 10 chữ số thập phân (0…9).
+ Một số kí tự đặc biệt khác.
b) Cú pháp
- Là bộ quy tắc dùng để viết chương trình.
c) Ngữ nghĩa
- Xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp ký tự dựa vào ngữ cảnh của nó.
2. Một số khái niệm
a) Tên
- Mọi đối tượng trong chương trình đều phải được đặt tên theo quy tắc của ngôn ngữ lập trình và từng chương trình dịch cụ thể.
- Trong Pascal:
+ Tên là một dãy liên tiếp không quá 127 kí tự bao gồm chữ số, chữ cái hoặc dấu gạch dưới.
+ Bắt đầu bằng chữ cái hoặc dấu gạch dưới.
+ Không phân biệt chữ hoa/thường.
Ví dụ: Baitap, thuc_hanh, _ONTAP, lop11, …
* Trong Pascal, phân biệt 3 loại tên:
- Tên dành riêng (từ khóa): tên được ngôn ngữ lập trình dùng với ý nghĩa riêng xác định, người lập trình không được sử dụng với ý nghĩa
khác.
Ví dụ: program, uses, var, begin, end, const, type,…
- Tên chuẩn: tên được ngôn ngữ lập trình dùng với ý nghĩa nhất định nào đó, tuy nhiên người lập trình có thể khai báo và dùng chúng với
ý nghĩa và mục đích khác.
Ví dụ: byte, integer, real, abs, sqr, sqrt,…
- Tên do người lập trình tự đặt: tên được dùng với ý nghĩa riêng, xác định bằng cách khai báo trước khi sử dụng (tên này không được trùng
với tên dành riêng).
b) Hằng và biến
* Hằng
- Là đại lượng có giá trị không đổi trong suốt quá trình thực hiện chương trình.
- Có 3 loại hằng:
+ Hằng số học: là các số nguyên hay số thực.
Ví dụ: 0, 2, -5, -22.4, 3.5, 1.0E-6,…
+ Hằng logic: là giá trị đúng hoặc sai.
Ví dụ: true, false
+ Hằng xâu: là dãy kí tự trong bộ mã ASCII, xâu đặt trong dấu nháy đơn.
Ví dụ: 'Xin chao!', 'lopHoc', 'tinhoc-pascal', '11c8',…
* Biến
- Là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình.
Chú ý: tên của hằng và biến khi đặt phải tuân theo theo quy tắc đặt tên.
c) Chú thích
- Trong Pascal, đoạn chú thích được đặt giữa cặp dấu { và } hoặc (* và *).
CHƯƠNG II. CHƯƠNG TRÌNH ĐƠN GIẢN
Bài 3: Cấu Trúc Chương Trình
1. Cấu trúc chung
- Chương chương trình được viết bằng một ngôn ngữ lập trình bậc cao gồm: phần khai báo và phân thân.
2. Các thành phần của chương trình
a) Phần khai báo (phần này có thể có hoặc không trong chương trình)
- Có thể khai báo cho: tên chương trình, thư viện, hằng, biến, chương trình con,…
Khai báo tên chương trình Program <tên chương trình>; Program LoiChao;
Khai báo thư viện Uses <tên thư viện>; Uses crt;
Khai báo hằng Const <tên hằng> = <giá trị>; Const pi=3.14;
tất cả các biến dùng trong chương trình đều phải được đặt tên và khai báo cho chương trình
Khai báo biến
dịch biết để lưu trữ và xử lý.
b) Phần thân chương trình
- Dãy lệnh trong phạm vi được xác định bởi cặp dấu hiệu mở đầu và kết thúc tạo thành thân chương trình.
Begin
<các câu lệnh>
End.
3. Ví dụ về chương trình đơn giản
- Chương trình sau đây in ra màn hình dòng chữ: Xin chao cac ban
Program LoiChao;
Uses crt;
Begin
clrscr;
write('Xin chao cac ban');
readln
End.

Bài 4: Một Số Kiểu Dữ Liệu Chuẩn


- Mỗi ngôn ngữ lập trình thường cung cấp một số kiểu dữ liệu chuẩn cho biết phạm vi giá trị có thể lưu trữ.
1. Kiểu nguyên
Byte 1 byte 0 … 255
Integer 2 byte -32768 … 32767
Word 2 byte 0 … 65535
Longint 4 byte -2147483648 … 2147483647
2. Kiểu thực
Real 6 byte 0 hoặc 2,9.10-39 … 1,7.1038
Extended 10 byte 0 hoặc 10-4932 … 104932
3. Kiểu kí tự
Char 1 byte 1 trong 256 kí tự trong ASCII
4. Kiểu logic
Boolean 1 byte true hoặc false

Bài 5: Khai Báo Biến


- Trong Pascal, khai báo biến bắt đầu bằng từ khóa Var.
- Có dạng: Var <danh sách biến> : <kiểu dữ liệu>;
Trong đó:
+ danh sách biến: một hoặc nhiều tên biến, các tên biết cách nhau bởi dấu phẩy.
+ kiểu dữ liệu: một trong các kiểu dữ liệu chuẩn hoặc kiểu dữ liệu dùng cho lập trình tự định nghĩa
Ví dụ: a, b, c: integer;
M, N: real;

Bài 6: Phép Toán, Biểu Thức, Câu Lệnh Gán


1. Phép toán
Phép toán Trong toán học Trong Pascal
Các phép toán số học với số nguyên +, -, x, :, chia nguyên, chia dư +, -, *, /, div, mod
Các phép toán số học với số thực +, -, x, : +, -, *, /
Các phép toán quan hệ <, ≤, >, ≥, =, ≠ <, <=, >, >=, =, <>
Các phép toán logic ┐ (phủ định), v (hoặc), ^ (và) not, or, and
2. Biểu thức số học
- Biểu thức toán học trong Pascal được viết theo quy tắc:
+ Chỉ dùng cặp ngoặc tròn để xác định trình tự thực hiện phép toán trong trường hợp cần thiết.
+ Viết lần lượt từ trái sang phải.
+ Không được bỏ dấu nhân (*) trong tích.
+ Các phép toán được thực hiện theo thứ tự: thực hiện các phép toán trong ngoặc trước; nếu trong dãy các phép toán không chứa ngoặc
thì thực hiện từ trái sang phải theo thứ tự các phép toán: nhân, chia, div, mod trước rồi cộng, trừ thực hiện sau.
3. Hàm số học chuẩn
Hàm Biểu diễn toán học Biểu diễn Pascal
Bình phương x2 sqr(x)
Căn bậc hai √𝑥 sqrt(x)
Giá trị tuyệt đối |x| abs(x)
Logarit tự nhiên lnx ln(x)
Lũy thừa của số e ex exp(x)
Sin, Cos sin, cos sin(x), cos(x)
Ví dụ: Biểu diễn biểu thức toán học sau sang biểu thức Pascal:
1 √(𝑠𝑖𝑛𝑥 + 𝑐𝑜𝑠𝑥)2 − 1
(3 + 𝑏). √ −
sin 𝑥 + 𝑐𝑜𝑠𝑥 |−5| + 1
(𝑐𝑜𝑠𝑥 − 1)2
 (3+b)*sqrt(1/(sin(x)+cos(x))) – (sqrt( sqr(sin(x)+cos(x))-1)/ (abs(-5)+1/sqr(cos(x)-1))
1
𝑎+𝑏√ |𝑏 + 𝑐|
(𝑠𝑖𝑛𝑥 − 1)2
− 2𝑎 +
1 2 + 𝑠𝑖𝑛𝑥
1−
𝑐𝑜𝑠𝑥
 (a+b*sqrt(1/sqr(sin(x)-1)))/ (1-1/cos(x)) – 2*a + abs(b+c)/(2+sin(x)
4. Biểu thức quan hệ
- Có dạng: <biểu thức 1> <phép toán quan hệ> <biểu thức 2>
Trong đó: biểu thức 1 và biểu thức 2 là cùng kiểu xâu hoặc cùng kiểu số học.
Ví dụ: x < 5, i+1 >= 2*j
5. Biểu thức logic
- Là biến logic hoặc hằng logic.
Ví dụ: (a*b=a*c) or (a*b=b*c) or (a*c=b*c)  tam giác cân
6. Câu lệnh gán
- Là cấu trúc cơ bản nhất của các ngôn ngữ lập trình.
- Có dạng: <tên biến> := <biểu thức>;
Ví dụ: tong:= a+b; tich:= 3*z; x:= -b/(2*a); st:= 'tin hoc'; gt:= gt*i;

Bài 7: Các Thủ Tục Chuẩn Vào Ra Đơn Giản


- Các chương trình đưa dữ liệu vào ra đó được gọi chung là các thủ tục chuẩn vào ra đơn giản.
1. Nhập dữ liệu từ bàn phím
- Có dạng: read(<danh sách biến vào >); hoặc readln(<danh sách biến vào>);
Trong đó: danh sách biến vào là một hoặc nhiều tên biến đơn, trong trường hợp nhiều biến thì các tên biến được viết cách nhau
bởi dấu phẩy.
Ví dụ: read(a); readln(a,b,c);
2. Đưa dữ liệu ra màn hình
- Có dạng: write(<danh sách kết quả ra>); hoặc writeln(<danh sách kết quả ra>);
Trong đó: danh sách kết quả ra có thể là tên biến đơn, biểu thức hoặc hằng.
Ví dụ: write('Ket qua la: '); writeln(X); writeln('Thuong hai so la: ', a/b :2:1); write('DIEN TICH HCN: ', dientich);
Bài tập: Viết chương trình nhập hai số bất kì từ bàn phím, biết rằng a, b là hai số nguyên ≤ 100. Tính tổng hai số đó.
Giải:
Cách viết 1 Cách viết 2
Program tinh_tong; Program tinh_tong;
Uses crt; Uses crt;
Var a, b: byte; Var a, b: byte;
tong: integer;
Begin Begin
clrscr; clrscr;
write('Nhap so a= '); readln(a); write('Nhap so a= '); readln(a);
write('Nhap so b= '); readln(b); write('Nhap so b= '); readln(b);
tong:= a+b;
writeln('Tong hai so la: ', tong); writeln('Tong hai so la: ', a+b);
readln readln
End. End.

Bài 8: Soạn Thảo, Dịch, Thực Hiện Và Hiệu Chỉnh Chương Trình
- Soạn thảo: gõ nội dung của chương trình gồm phần khai báo với các lệnh trong thân chương trình. Về cơ bản, việc soạn thảo chương
trình tương tự như soạn thảo văn bản.
- Lưu chương trình vào đĩa: nhấn phím F2, nhập tên tệp rồi nhấn phím Enter (phần mở rộng .pas).
- Biên dịch chương trình: nhấn tổ hợp phím Alt+F9. Nếu chương trình có lỗi cú pháp phần mềm sẽ hiển thị lỗi thông báo. Cần phải sửa lỗi
nếu có, lưu lại chương trình rồi tiến hành biên dịch lại cho tới khi không còn lỗi.
- Chạy chương trình: nhấn tổ hợp phím Ctrl+F9.
- Đóng cửa sổ chương trình: nhấn tổ hợp phím Alt+F3.
- Thoát khỏi phần mềm: nhấn tổ hợp phím Alt+X.

Bài tập

CHƯƠNG III. CẤU TRÚC RẼ NHÁNH VÀ LẶP


Bài 9: Cấu Trúc Rẽ Nhánh
1. Rẽ nhánh
- Dạng thiếu: Nếu…thì…
- Dạng đủ: Nếu…thì…, nếu không…thì…
Ví dụ: Nếu delta < 0 thì phương trình vô nghiệm.
Nếu delta >= 0 thì phương trình có nghiệm phân biệt, ngược lại (delta < 0) thì phương trình vô nghiệm.
2. Câu lệnh If-then
- Để mô tả, Pascal dùng câu lệnh nghiệp If-then tương ứng với hai dạng thiếu và đủ.
- Cấu trúc rẽ nhánh dạng thiếu: If <điều kiện> then <câu lệnh>;
- Cấu trúc rẽ nhánh dạng đủ: If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
Trong đó:
+ điều kiện là một biểu thức.
+ câu lệnh, câu lệnh 1, câu lệnh 2 có thể là một hàm, cấu trúc rẽ nhánh, cấu trúc lặp, phép gán,…
Ví dụ 1: If delta < 0 then write('Phuong trinh vo nghiem');
Ví dụ 2: If delta >= 0 then write('Phuong trinh co nghiem') else write('Phuong trinh vo nghiem');
Ví dụ 3: If n mod 2 = 0 then writeln('So vua nhap la so chan') else writeln('So vua nhap la so le');
Ví dụ 4: If (n mod 2 = 0) and (n mod 5 = 0) then writeln('n chia het cho 2 va 5') else writeln('n khong chia het cho 2 va 5');
Chú ý: trước else không được có dấu chấm phẩy.
Bài tập 1: Viết chương trình nhập vào một số nguyên bất kì, thực hiện:
a) Kiểm tra xem số vừa nhập là số chẵn hay lẻ.
b) Kiểm tra xem số vừa nhập là số nguyên dương hay nguyên âm.
Giải:
Code/mã: Kết quả:
Program kiemtra; Nhap so a= -12
Uses crt; So vua nhap la so chan
Var a: integer; So vua nhap la so am
Begin
clrscr;
write('Nhap so a= '); readln(a);
if a mod 2=0 then writeln('So vua nhap la so chan')
else writeln('So vua nhap la so le');
if a>=0 then writeln('So vua nhap la so duong')
else writeln('So vua nhap la so am');
readln
End.
Bài tập 2: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 (a ≠ 0).
Giải:
Code/mã: Kết quả:
Program pt_b2; Nhap he so a= 2
Uses crt; Nhap he so b= 3
Var a, b, c, delta, x, x1, x2: real; Nhap he so c= -5
Begin ----------
clrscr; Phuong trinh co 2 nghiem phan biet:
write('Nhap he so a= '); readln(a); x1= 1 ; x2= -2.5
write('Nhap he so b= '); readln(b);
write('Nhap he so c= '); readln(c);
writeln('----------');
if a<>0 then
begin
delta:= sqr(b)-4*a*c;
x:= -b/(2*a*c);
x1:= (-b+sqrt(delta))/(2*a);
x2:= (-b-sqrt(delta))/(2*a);
end
else exit;

if delta<0 then writeln('Phuong trinh vo nghiem!')


else if delta= 0 then
writeln('Phuong trinh co nghiem kep: x= ', x:2:1)
else
begin
writeln('Phuong trinh co 2 nghiem phan biet: ');
writeln('x1= ', x1:2:1, ' ; x2= ', x2:2:1);
end;
readln
End.

Bài 10: Cấu Trúc Lặp


1. Lặp
1 1 1 1
𝑆= + + +⋯+
𝑎 𝑎+1 𝑎+2 𝑎+100
 Số lần lặp là 100 và việc cộng vào tổng S sẽ kết thúc khi đã thực hiện việc cộng 100 lần.
1 1 1 1 1
𝑋= + + + ⋯+ cho đến khi < 0.0001 thì dừng.
𝑎 𝑎+1 𝑎+2 𝑎+𝑛 𝑎+𝑛
1
 Số lần lặp chưa biết trước, việc cộng vào tổng X sẽ kết thúc khi điều kiện < 0.0001 được thỏa mãn.
𝑎+𝑛
2. Lặp với số lần biết trước và câu lệnh For-do
- Để mô tả cấu trúc lặp với số lần biết trước, Pascal dùng câu lệnh For-do với 2 dạng:
+ Lặp tiến: For <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
+ Lặp lùi: For <biến đếm> := <giá trị cuối> to <giá trị đầu> do <câu lệnh>;
Trong đó:
+ biến đếm là biến đơn, kiểu nguyên.
+ giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm và giá trị đầu phải ≤ giá trị cuối, ngược lại không thực hiện.
Ví dụ 1: Tính tổng các số nguyên từ 1 đến 9
S:= 0;
For i:= 1 to 9 do S:= S+i;
Ví dụ 2: Tính giai thừa của số nguyên n (n!).
gt:= 1;
For i:= 1 to n do gt:= gt*i;
1 1 1 1
Ví dụ 3: Tính tổng 𝑆 = + + + ⋯+
𝑎 𝑎+1 𝑎+2 𝑎+100
S:= 1/a;
For i:= 1 to 100 do S:= S+1/(a+i);
3. Lặp với số lần chưa biết trước và câu lệnh While-do
- Có dạng: While <điều kiện> do <câu lệnh>;
Trong đó:
+ điều kiện là một biểu thức.
+ câu lệnh là một câu lệnh đơn hoặc lệnh ghép (dãy lệnh được đặt trong cặp begin … end; (sau end là dấu chấm phẩy)).
1 1 1 1 1
Ví dụ 1: Tính tổng 𝑋 = + + + ⋯+ cho đến khi < 0.0001 thì dừng.
𝑎 𝑎+1 𝑎+2 𝑎+𝑛 𝑎+𝑛
While not(1/a+n) < 0.0001 do S:= S+1/(a+n);
Ví dụ 2: Tìm UCLN của M và N
While M <> N do
If M > N then M:= M-N else N:= N-M;
Bài tập 1: Viết chương trình tính giai thừa của một số nguyên bất kì nhập từ bàn phím.
Giải:
Code/mã: Kết quả:
Program giai_thua; Nhap so can tinh giai thua: 5
Uses crt; 5! = 125
Var n, i, gt: integer;
Begin
clrscr;
write('Nhap so can tinh giai thua: '); readln(n);
gt:= 1;
for i:= 1 to n do gt:= gt*i;
writeln(n, '! = ', gt);
readln
End.
Bài tập 2: Viết chương trình tính biểu thức: S = 12 + 22 + 32 + ... + n2 (n là giá trị nhập từ bàn phím).
Giải:
Code/mã Kết quả:
Program bai2; Nhap n= 3
Uses crt; Gia tri S la: 14
Var n, i, s: integer;
Begin
clrscr;
write('Nhap n= '); readln(n);
s:= 0;
for i:= 1 to n do s:= s+sqr(i);
writeln('Gia tri S la: ', s);
readln
End.
1 1 1 1 1
Bài tập 3: Viết chương trình tính biểu thức: S = + + + ... + + … cho đến khi < 0,000001 thì dừng.
12 22 32 n2 n2
Giải:
Code/mã Kết quả:
Program cau_b; Gia tri S la: 1.639394
Uses crt;
Var n, bp: integer;
s: real;
Begin
clrscr;
n:= 1; bp:= 1; s:= 0;
while not (1/bp < 0.000001) do
begin
bp:= sqr(n); s:= s+1/bp; n:= n+1;
end;
writeln('Gia tri S la: ', s:2:6);
readln
End.

CHƯƠNG IV. DỮ LIỆU CÓ CẤU TRÚC


Bài 11: Kiểu Mảng
1. Mảng một chiều
- Là dãy hữu hạn các phần tử cùng kiểu, mảng được đặt tên và mỗi phần tử của nó có một chỉ số.
- Cách thức cho phép xác định:
+ Tên kiểu mảng một chiều.
+ Số lượng phần tử.
+ Cách khai báo biến mảng.
+ Cách tham chiếu đến phần tử.
a) Khai báo
Var <tên biến mảng> : array[<kiểu chỉ số>] of <kiểu phần tử>;
Trong đó:
+ kiểu chỉ số là một đoạn số nguyên liên tục có dạng n1..n2 với n1, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu
và chỉ số cuối (n1 ≤ n2).
+ kiểu phần tử là kiểu các phần tử trong mảng.
Ví dụ: Var nhietdo : array[1..30] of real;
∆ Ngoài ra, người ta còn khai báo mảng gián tiếp: Type <tên kiểu mảng> = array[ <kiểu chỉ số> ] of <kiểu phần tử>;
var <tên biến mảng> : <tên kiểu mảng>; {khai báo cùng với biến}
- Tham chiếu tới phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ].
Ví dụ: tham chiếu tới nhiệt độ (nhietdo) của ngày thứ 20 viết là nhietdo[20].
b) Một số ví dụ
Viết chương trình nhập vào mảng một chiều gồm 5 phần tử:
a) Đưa ra màn hình các phần tử trong mảng.
b) Tính tổng các phần tử trong mảng.
c) Đếm có bao nhiêu phần tử là số lẻ trong mảng.

Bài 12: Kiểu Xâu


- Xâu là dãy ký tự trong bộ mã ASCII.
- Mỗi ký tự được gọi là một phần tử của xâu.
- Số lượng ký tự trong một xâu được gọi là độ dài của xâu.
- Xâu có độ dài bằng 0 được gọi là xâu rỗng.
- Tương tự mảng, tham chiếu tới phần tử của xâu được xác định bởi tên biến xâu và chỉ số đặt trong cặp ngoặc [ và ].
1. Khai báo
Var <tên biến> : string[<độ dài lớn nhất>];
Ví dụ: Var S: string[30];  xâu S chứa tối đa 30 kí tự.
Var S: string;  xâu S chứa tối đa mặc định 255 kí tự.
Var S: string[0];  xâu S rỗng.
2. Các thao tác xử lý xâu
a) Phép ghép xâu
- Phép ghép xâu (kí hiệu: +) được sử dụng để ghép nối nhiều xâu thành một.
Ví dụ: 'Binh' + 'My' = 'BinhMy'
'Binh ' + 'Thuy' = 'Binh Thuy'
b) Phép so sánh xâu
- Xâu A lớn hơn B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn.
Ví dụ: 'BinhMy' < 'BinhThuy'
- Hai xâu được coi là bằng nhau nếu chúng giống nhau hoàn toàn.
Ví dụ: 'THPT BM' = 'THPT BM'
Chú ý: 'TRUONG HOC' < 'truong hoc'
'Tinhoc' > 'Tin hoc'
'Tin' < 'Tin hoc'
'Hue' > 'An Giang'

Kí tự có mã ASCII lớn hơn thì kí tự đó lớn hơn. Mã ASCII tăng dần từ: dấu cách…0…9…A…Z…a…z…
c) Thủ tục thường gặp
Thủ tục Tác dụng Cú pháp Trong đó Ví dụ
Thực hiện việc xoá n st: xâu st= 'Nguyen Van A'
Xóa n kí tự kí tự của xâu st bắt delete(st,vt,n); vt: vị trí bắt đầu xóa delete(st,8,3);
đầu từ vị trí vt n: số kí tự xóa  'Nguyen A'
Thực hiện chèn xâu s1 s1= ' PC ', s2= 'IBM486'
s1, s2: xâu
Chèn xâu S1 vào xâu S2 vào xâu s2, bắt đầu ở insert(s1,s2,vt); insert(s1,s2,4);
vt: vị trí bắt đầu chèn xâu s1
vị trí vt  'IBM PC 486'
Tạo xâu gồm n kí tự s: xâu S= 'Bai hoc thu 9'
Hàm tạo xâu liên tiếp bắt đầu từ vị copy(s,vt,n); vt: vị trí bắt đầu lấy trong xâu s copy(S,9,5);
trí vt của xâu s n: số kí từ sẽ lấy  'thu 9'
s= '500 ki tu'
Cho giá trị là độ dài
Hàm tính độ dài xâu length(s) length(s)
xâu s
9
Hàm cho biết vị trí xuất Cho vị trí xuất hiện s2= 'abcdef'
hiện đầu tiên của xâu s1 đầu tiên của xâu s1 pos(s1,s2) pos('cd',s2)
trong s2 trong xâu s2 3
Cho chữ cái viết hoa
upcase(a)  'A'
Hàm cho chữ cái in hoa ứng với chữ cái trong upcase(ch)
upcase(B)  'B'
ch
Bài tập: Viết chương trình nhập vào một xâu bất kì từ bàn phím. Đếm có bao nhiêu khoảng trắng trong xâu vừa nhập.
Giải:
Code/mã: Kết quả:
Program khoang_trang; Nhap xau: day la chuong trinh nhap xau.
Uses crt; Co 5 khoang trang trong xau!
Var st: string;
i, dem: byte;
Begin
clrscr;
write('Nhap xau: '); readln(st);
dem:= 0;
for i:= 1 to length(st) do {length: do dai cua xau}
if st[i] = ' ' then inc(dem);
writeln('Co ', dem, ' khoang trang trong xau!');
readln;
End.

Bài 14.15. Kiểu Tệp


1. Khái niệm về tệp
- Tệp là một dãy các phần tử cùng kiểu được sắp xếp một cách tuần tự.
- Tệp dữ liệu được lưu trữ ở bộ nhớ ngoài (đĩa từ, CD...) dưới một tên nào đó.
- Tệp tập hợp trong nó một số phần tử dữ liệu có cùng cấu trúc giống như mảng nhưng khác mảng là số phần tử của tệp chưa được xác
định.
2. Phân loại tệp
- Theo cách tổ chức dữ liệu.
- Theo cách thức truy cập.
3. Thao tác với tệp
• Khai báo: Var <tên biến tệp> : text;
Ví dụ: Var tep1, tep2: text;
• Gắn tên tệp: assign(<biến tệp>,<tên tệp>);
 biến tệp: là biến xâu hoặc hằng xâu.
Ví dụ: . assign(tep1, 'TEP.TXT');
. assign(tep2, 'C:\TP\TEP.TXT');
• Mở tệp
+ Mở tệp để ghi: rewrite(<biến tệp>);
Ví dụ: assign(tep2, 'C:\TP\TEP.TXT');
rewrite(tep2);
+ Mở tệp để đọc: reset(<biến tệp>);
Ví dụ: assign(tep2, 'C:\TP\TEP.DAT);
reset(tep2);
• Đọc/ghi tệp văn bản
+ Câu lệnh dùng thủ tục đọc: read(<biến tệp>,<danh sách biến>);
hoặc readln(<biến tệp>,<danh sách biến>);
 danh sách biến: là một hoặc nhiều biến đơn, trường hợp nhiều biến thì các biến phân cách nhau bởi dấu phẩy.
Ví dụ: . read(tep1,A,B,C);
. readln(tep2,m,n);
+ Câu lệnh dùng thủ tục ghi: write(<biến tệp>,<danh kết quả>);
hoặc writeln(<biến tệp>,<danh kết quả>);
 danh sách kết quả: gồm 1 hoặc nhiều phần tử.
Ví dụ: . write(tep1, 'A= ', A, 'B= ', B, 'C= ', C);
. writeln(tep2, 'D= ', sqr(b)-4*a*c);
• Đóng tệp: close(<biến tệp>);
Ví dụ: close(tep1); close(tep2);

You might also like