Chuyên đề tin học 11

(Bài giảng chưa được thẩm định)
Nguồn:
Người gửi: Mai Quang Ninh (trang riêng)
Ngày gửi: 13h:59' 13-05-2009
Dung lượng: 269.5 KB
Số lượt tải: 58
Số lượt thích: 0 người

KIỂU DỮ LIỆU ĐƠN GIẢN
I. CÁC KIỂU DỮ LIỆU:
+ Kiểu chuẩn:
- Kiểu lôgic (boolean)*
- Kiểu nguyên ( byte, integer, word, longint)*
- Kiểu thực (real)
- Kiểu kí tự (char)*
- Kiểu xâu (string)
+ Kiểu do người lập trình định nghĩa:
- Kiểu đoạn con.(*).
- Kiểu liệt kê (*)
KIỂU DỮ LIỆU ĐƠN GIẢN
+ Kiểu có cấu trúc:
- Kiểu mảng
- Kiểu xâu (có chỉ ra độ dài tối đa)
- Kểu tập hợp
- Kiểu bản ghi
- Kiểu tệp
Chú ý: Các kiểu có dấu (*) còn gọi là kiểu vô hướng ( hay có thứ tự)
KIỂU LIỆT KÊ
*) Cách khai báo: có hai cách.
ví dụ: Type Ngay=(HAI, BA, TU, NAM, SAU,BAY);
*) Các thao tác:
Có thể thực hiện phép gán.
Các phép so sánh
Các hànm: Ord, Pred, Succ.
*) Chú ý:
không được nhập, xuất dữ liệu kiểu liệt kê.
Giá trị kiểu liệt kê thường dùng làm: Chỉ số vòng lặp For, các trường hợp của Câu lệnh Case, chỉ số cho mảng.
KIỂU ĐOẠN CON
*) Cách khai báo:
Type = hằng dưới .. hằng trên;
Ví dụ Type Ngay = 1..31;
thang = 1..12;
*) Ý nghĩa: Giúp chương trình dễ dọc, dễ kiểm tra và tiét kiệm bộ nhớ.
KIỂU TẬP HỢP
*) Cách khai báo:
Type = Set of kiểu cơ sở;
Ví dụ:
Type Chu_so = Set of 0..9;
Chu_cai_hoa = Set of ‘A’..’Z’;
Ngay = Set of 1..31;
Thang = set of 1..12;
Var so:chu_so; Chu: Chu_cai_hoa; Th:Thang;
KIỂU TẬP HỢP
*) Giải thích:
Kiểu cơ sở: là tập hợp những dữ liẹu vô hướng.
Các giá trị đưa vào tập hợp cần có số thứ tự trong khoảng từ 0 đến 255.
Một dữ liệu kiểu tập hợp có dạng các phần tử nằm trong hai dấu ngoặc vuông [ ]. Vd: [3,6..7], [‘A’..’Z’,’a’..’z’ ]. …
Biến tập hợp cho phép có từ 0 đến 256 phần tử. Vd: so:=[0..255].
Các thao tác trên tập hợp:
Phép gán: so:=[]; chu :=[‘A’,’C’..’E’ ];
Phép toán quan hệ: = , <>, <= (vd: A<=B) , >= (vd: B>=A)
Chú ý: không có phép toán < hoặc >.
KIỂU TẬP HỢP
- Phép toán hợp, giao, hiệu:
Gọi A, B là hai dữ liệu cùng kiểu tập hợp. Khi đó:
A + B là hợp của A và B
A * B là giao của A và B
A – B là hiệu của A và B
Ví dụ: A:= [1,3,6]; B:= [3,8,9];
A + B có giá trị là [1,3,6,8,9]
A * B có giá trị là [3]
A – B có giá trị là [1,6]
Bài toán: Viết chương trình nhập vào một chữ cái. Xem xét xem chữ cái vừa nhập là nguyên am hay phụ âm và thông báo kết quả lên màn hình?
CÁC DẠNG CÂU LỆNH
Lệnh gán: Biến := Biểu thức;
Lệnh ghép: Begin end;
Lệnh If – then:
(1) If then ;
(2) If then
Else ;
Lệnh For – do:
(1) For biến := to do ;
(2) For biến := downto do ;
CÁC DẠNG CÂU LỆNH
Lệnh while – do:
While do ;
Câu lệnh Repeat - Until:
REPEAT
;
;
……..
;
UNTIL ;
? So sánh While và Repeat
CÁC LỆNH BREAK , EXIT, HALT
*) LỆNH BREAK: lệnh này thường nằm trong lệnh lặp For, while, repeat. Khi gặp lệnh này thì máy sẽ thoát ra khỏi chu trình. Nếu có nhiều chu trình lồng nhau thì máy chỉ thoát ra khỏi chu trình trong nhất chứa lệnh Break.
*) LỆNH EXIT: Nếu gặp lệnh này trong chương trình con thì máy sẽ kết thúc chương trình con và trở về chỗ gọi nó. Nếu lệnh exit này nằm trong chương trình chính thì thực hiện chấm dứt chương trình chính.
*) LỆNH HALT: Lệnh Halt làm dừng hẳn chương trình. Thường dùng khi gặp phải trường hợp nào đó mà thuật toán không thể tiếp tục được.

CÁC DẠNG CÂU LỆNH
Câu lệnh Case - of:
Case of
: ;
: ;
………………………
:
[Else ; ]
End;
CÁC DẠNG CÂU LỆNH
*) Giải thích câu lệnh Case:
Tập hằng i (i=1,..N): có thể là các hằng, đoạn hằng. Ví dụ:
3: ;
3..7,10: ;
‘0’..’9’,’a’..’z’: ;
True : ;
Giá trị tập hằng_i và biểu thức phải cùng kiểu đếm được
……
? Tự chuyển cấu trúc từ If – then sang Case – of.
Ví dụ: Viết chương trình nhập vào một điểm kiểm tra từ bàn phím và in ra kết quả xếp loại: loại yếu (dưới 5), loại khá (7,8), loại TB (5,6), loại giỏi (8,9,10).
Bài 2
Viết chương trình thực hiện:
Nhập một kí tự từ bàn phím
In ra màn hình xem kí tự đó thuộc vào nhóm nào trong bốn nhóm: Chữ cái hoa, chữ cái thường, chữ số, kí tự đặc biệt của TP.
Cần thông báo nếu kí tự không thuộc vào các nhóm trên.
Bài 3
Viết chương trình thực hiện:
Nhập từ bàn phím một kí tự
In ra màn hình xem kí tự đó thuộc vào nhóm nào trong bốn nhóm: Chữ cái hoa, chữ cái thường, chữ số, kí tự đặc biệt của TP.
Cần thông báo nếu kí tự không thuộc vào các nhóm trên.
HÀM VÀ THỦ TỤC CHUẨN
Các hàm:
SQR(X):
ABS(X):
SIN(X):
COS(X):
ARCTAN(X):
LN(X):
EXP(x):
TRUNC(X):
ROUND(X):
PRED(X): PRED(2)=1
HÀM VÀ THỦ TỤC CHUẨN
- SUCC(X): SUCC(2)=3
ORD(ch):
CHR(N)
ODD(N): ODD(1)= TRUE, ODD(2)= FALSE
HÀM VÀ THỦ TỤC TRÊN KIỂU XÂU
*) Thủ tục:
DELET(S,VT,N);
INSERT(S1,S2,VT);
- STR(VALU,S);
Valu: là một biểu thức nguyên hay thực có ghi dạng in ra.
S: Biến kiểu xâu.
Ví dụ: i:= 1234; str(i:5,s); => s=‘_1234’
VAL(S,VAR,CODE); Ví dụ: Val(‘123’,var, code); -> var=123, code=0. Val(‘123x’,var,code); -> var không xác định, code=4.
HÀM VÀ THỦ TỤC TRÊN KIỂU XÂU
*) Hàm:
LENGTH(S):
POS(S1,S2):
COPY(S,VT,N):
CONCAT(S1,S2,…,Sn):
MỘT SỐ BÀI TOÁN TRÊN KIỂU DL ĐƠN GIẢN
1. Viết chương trình đọc vào một số nguyên có 3 chữ số rồi hiển thị lại số nguyên ấy sao cho giữa các số có dấu ‘*’. Ví dụ: 789 -> 7*8*9
2. Viết chương trình đọc vào một số nguyên rồi thực hiện:
Hiển thị số đảo ngược của số ấy.
Hiệu của số ấy với số đảo ngược
3. Nhập vào một số trong hệ thập phân rồi chuyển sang hệ nhị phân và hiển thị lên màn hình.
4. Viết chương trình nhập vào một số nguyên n rồi tính và hiển thị kết quả sau: s=1-2+3-4+…+(-1)(n+1)*n
MỘT SỐ BÀI TOÁN TRÊN KIỂU DL ĐƠN GIẢN
5. Số hoàn thiện là số có tổng các ước số nhở hơn nó (kể cả 1) bằng chính nó. Viết chương trình hiển thị các số hoàn thiện nhỏ hơn 100.
6. Viết chương trình hiển thị tất cả các số có 3 chữ số mà tổng các chữ số bằng tích các chữ số.
7. Viết chương trình tính diện tích các hình tròn, CN, tam giác theo cách sau:
- Nếu người dùng nhập vào một số nguyên dương thì cho diện tích hình tròn.
- Nếu nhập 2 số nguyên dương thì cho diện tích hình CN
Nếu nhập 3 số nguyên dương thì cho diện tích hình tam giác.
8. Hiển thị ra màn hình các số nguyên tố bé hơn 100?
MỘT SỐ BÀI TOÁN TRÊN KIỂU XÂU
Viết chương trình nhập vào họ tên của một người rồi hiển thị lại theo thứ tự: Tên, họ đệm, họ.
Nhập vào một xâu sau đó bỏ đi các dấu cách sao cho giữa các từ chỉ còn một dấu cách.
Nhập vào một xâu sau đó đưa ra xâu mà các kí tự đầu các từ là chữ hoa, còn các kí tự còn lại là chữ thường.
Kiểm tra một xâu nhập vào có phải là đối xứng hay không rồi thông báo lên màn hình.
Viết chương trình để mã hoá và giải mã một xâu kí tự theo một khoá k.
MỘT SỐ BÀI TOÁN TRÊN KIỂU MẢNG
1. Viết chương trình nhập vào một dãy gồm n(n<=50) số nguyên dương. Thực hiện các công việc sau:
+ Đếm số lượng phần tử chẵn?
+ Số các số là số nguyên tố.
+ Sắp xếp dãy thành dãy không giảm?
+ Hiển thị các số có tính chất đối xứng ra màn
2. Viết chương trình nhập vào họ tê n của n(n<=50) học sinh của một lớp. In ra danh sách các học sinh theo thứ tự ABC.
MỘT SỐ BÀI TOÁN TRÊN KIỂU BẢN GHI
2. Toạ độ của một điểm trong mặt phẳng được cho bởi cặp số thực tương ứng với hoành độ và tung độ của điểm đó.
a) Mô tả kiểu bản ghi để biểu diễn toạ độ điểm.
b) Viết chương trình có sử dụng kiểu bản ghi trong mục a) để thực hiện:
+ Nhập vào từ bàn phím toạ độ của ba đỉnh A, B, C của tam giác ABC.
+ Tính và hiẻn thị ra màn hình toạ độ trọng tâm của tam giác đó.
KIỂU TỆP
Bài 1:
1. Tạo một tệp có tên ‘nguyen.in’ chứa 100 số nguyên từ 1 đến 100.
Đọc tất cả các số từ tệp vừa tạo ở trên rồi tính tổng các số lẻ và tổng các số chẵn.
Xuất kết quả trên ra tệp có tên ‘nguyen.out’ với nội dung như sau:
Tong so le: ?
Tong so chan: ?
KIỂU TỆP
Bài 2: Cho tệp ‘so.in’ chứa n số nguyên gồm 2 dòng:
Dòng 1: chứa số n
Dòng 2: chứa các ai (i=1..n)
Viết chương trình thực hiện:
Cho biết số có giá trị lớn nhất trong tệp.
Kiểm tra xem dãy số trong tệp có phải là một cấp số cộng hay không?
Sắp xếp dãy số trên thành dãy không giảm rồi ghi vào tệp có tên ‘so.out’. Tệp ‘so.out’ gồm 2 dòng: dòng 1 chứa số n, dòng 2 chứa n số nguyên.
I> Phương pháp sinh:
*) Cụ thể: Giải được cho các bài toán thoả mãn điều kiện:
Có thể xác định được một thứ tự các cấu hình liệt kê. Từ đó có thể xác định được cấu hình đầu tiên và cấu hình cuối cùng trong thứ tự cần xác định.
*) Xác định được thuật toán từ cấu hình chưa phải là cuối cùng đang có, đưa ra cấu hình kế tiếp.
BÀI TOÁN LIỆT KÊ
*) Thuật toán Sinh:
Proc Sinh;
Begin

Stop:=f;
While not stop do
Begin
<Đưa ra cấu hình đang có>
Sinh_Kế _tiếp;
End;
End;
Bài toán 1: Liệt kê các dãy nhị phân có độ dài n:
Ví dụ với n=2,3.
II> Thuật toán đệ quy quay lui:
Thuật toán:
Proc Try(i);
Begin
Với mọi giá trị j thuộc tập V
If < j chấp nhận được> then < Xá định xi theo j>
If i=n then <đưa ra cấu hình>
Else
Begin { nếu cần}
Else try(i+1) {xác định vị trí thứ i+1}
< Trả lại cấu hình cho vị trí i> {nếu cần}
End;
End;
Bài Tập:
Bài 1: Liệt kê tất cảc các dãy nhị phân có độ dài n.
Bài 2: Liệt kêt tất cả các hoán vị của n phần tử.
3915929

Nhật Trường Chào chủ nhà.

 

hinhdong011

hinhdong003

 
 
 
Gửi ý kiến
print