Câu hỏi: Kiểu xâu lưu ở bộ nhớ nào?
Lời giải:
Xâu là dãy các kí tự được lưu trong bộ mã ASCII, mỗi kí tự là một phần tử trong xâu.
Cùng Top lời giải tìm hiểu về một số kiểu dữ liệu chuẩn nhé!
Kiểu dữ liệu chuẩn là một tập hữu hạn các giá trị. Mỗi kiểu dữ liệu cần một dung lượng bộ nhớ cần thiết để lưu trữ và xác định các phép toán có thể tác động lên dữ liệu. Một số kiểu dữ liệu thường dùng cho biến đơn như sau:
a. Kiểu số nguyên: dùng để khai báo các đại lượng nhận giá trị là các số nguyên.
Tên kiểu |
Phạm vi |
Dung lượng |
Shortint |
-128 → 127 |
1 byte |
Byte |
0 → 255 |
1 byte |
Integer |
-32768 → 32767 |
2 byte |
Word |
0 → 65535 |
2 byte |
LongInt |
-2147483648 → 2147483647 |
4 byte |
b. Kiểu số thực: dùng để khai báo các đại lượng nhận giá trị là các số thực.
Kiểu |
Bộ nhớ lưu trữ một giá trị |
Phạm vi giá trị |
Real |
6 byte |
0 hoặc có giá trị tuyệt đối nằm trong phạm vi từ 10-38 đến 1038 |
Extended |
10 byte |
0 hoặc có giá trị tuyệt đối nằm trong phạm vi từ 10-4932 đến 104932 |
c. Kiểu kí tự: Biểu thức gồm các toán hạng là biến xâu, biến kí tự hoặc hằng xâu được gọi là biểu thức xâu. Dữ liệu kiểu xâu là dãy các kí tự. Số lượng kí tự trong xâu được gọi là độ dài của xâu .
* Khai báo
Để khai báo dữ liệu kiểu xâu ta sử dụng tên dành riêng string, tiếp theo là dộ dài lớn nhất của xâu (không vượt quá 255 kí tự đặt trong dấu ngoặc [ và ] )
Các thao tác xử lí xâu
- Phép ghép xâu được dùng để ghép nhiều xâu thành một (kể cả đối với các hằng và biến xâu) trong bộ mã ASCII. Để 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 phép so sánh: (=), (o), (<), (>),(<=), (>=) có thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu và thực hiện việc so sánh hai xâu theo quy tắc sau:
+ Xâu A là lớn hơn xâu 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.
+ Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A nhỏ hơn.
d. Kiểu lôgic (kiểu thứ tự đếm được): được dùng khi kiểm tra một điều kiện hoặc tìm giá trị của một biểu thức lôgic.
- Từ khóa: BOOLE
+ 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.
Kiểu |
Bộ nhớ lưu trữ một giá trị |
Phạm vi giá trị |
Boolean |
1 byte |
True hoặc False |
Bài tập 1:
Chương trình dịch Pascal sẽ cấp phát bao nhiêu Byte bộ nhớ cho khai báo sau:
Var x : Integer;
y, z : Real;
c : Char;
Gợi ý làm bài:
- Biến x thuộc kiểu Integer => sẽ cấp phát 2 byte bộ nhớ.
- Biến y, z thuộc kiểu Real => sẽ cấp phát 6 byte + 6 byte = 12 byte bộ nhớ.
- Biến c thuộc kiểu Char => sẽ cấp phát 1 byte bộ nhớ.
Vậy cần cấp phát 15 byte bộ nhớ cho khai báo trên.
Bài tập 2:
Nhập xâu S1, tạo xâu S2 gồm tất cả các chữ số của xâu S1
Giải :
Program Xau_chu_so;
Uses crt;
Var i: integer;
S1,S2: string;
Begin
Clrscr;
Write(‘Nhap xau ki tu S1: ‘); Readln(S1);
S2:=#32;
For i:=1 to length(S1) to
If S1[i] in [‘0’..’9’] then
S2:=S2+S1[i];
Writeln(‘Xau S2: ‘,S2);
Bài tập 3: {Tính diện tích và chu vi tam giác theo 3 cạnh}
Var
a, b, c, P, S : Real;
Tgiac: Boolean;
Begin
Write(‘ Nhap 3 canh cua tam giac : ‘);
Readln(a, b, c);
Tgiac:= (a>0) and (b>0) and (c>0) and
(a+b>c) and (a+c>b) and (b+c>a);
If Tgiac= FALSE then
Writeln(‘ Khong phai ba canh cua tam giac !’)
else
begin
P:=(a+b+c)/2;
S:= Sqrt( P*(P-a)*(P-b)*(P-c) );
Writeln(‘ chu vi = ‘ , 2*P:10:2);
Writeln(‘ dien tich S= ‘ , S:10:2);
end;
Readln;
End.