Professional Documents
Culture Documents
ĐẠI CƯƠNG A 1
Thời lượng: 33 tiết LT + 33 tiết TH
2/169
A1
Phần I: TỔNG QUAN VỀ MÁY TÍNH
I.Giới thiệu
•Máy tính là công cụ xử lý thông tin.
•Các thao tác chính:
–Nhận thông tin(Receive input): thu nhận thông tin từ
bên ngoài vào máy tính chuyển đổi thông tin từ
thế giới thực sang dạng biểu diễn trong máy thông
qua các thiết bị nhập
–Xử lý thông tin( process information): thực hiện biến
đổi, phân tích, tổng hợp, tra cứu,… thông tin ban
đầu để có thông tin mong muốn
3/169
A1
4/169
A1
II. Thông tin – biểu diễn thông tin
•Thông tin trong tin học được hiểu là các con số có thể rời
rạc hay liên tục Thông tin được mã hóa dưới dạng số
•Các thông tin khi đưa vào máy tính đều được số hoá
thành từng bít(binary digit)
•Bít có 2 giá trị on- off tương ứng với sự tắt mở của các
mạch điện trong máy tính. Bít là đơn vị đo thông tin nhỏ
nhất trong tin học
•Bít được xây dựng dựa trên trạng thái chuyển mạch của
thiết bị và đại diện cho số theo hệ đếm nhị phân biểu diễn
bằng 2 ký tự 0 và 1
•Đơn vị lưu trữ thông tin là Bit (B) là đơn vị nhỏ nhất lưu
trữ một giá trị 0 hoặc 1
5/169
A1
6/169
A1
III. Hệ đếm và các phép tính
8/169
A1
9/169
A1
10/169
A1
11/169
A1
12/169
A1
Bộ nhớ ngoài
Bộ xử lý trung tâm
Bộ nhớ trong
15/169
A1
16/169
A1
2. Bộ xử lý trung tâm
•CPU gồm các bộ phận sau:
–Bộ điều khiển(CU- control Unit): điều khiển
các bộ phận khác của máy tính thực hiện
chương trình
–Bộ số học và logic(ALU- Arithmetic/ Logic
Unit): thiết bị thực hiện các phép toán số học
và logic
–Thanh ghi(register): là vùng nhớ đặc biệt
được CPU sử dụng để lưu trữ tạm thời các
lệnh và dữ liệu đang được xử lý
17/169
A1
3. Bộ nhớ chính
•Bộ nhớ chính (Bộ nhớ trong) dùng để
lưu trữ chương trình và dữ liệu đưa vào
cũng như dữ liệu thu được trong quá
trình thực hiện chương trình.
18/169
A1
20/169
A1
a. Đĩa mềm
-Kích thước 3,5 inch với dung
lượng 1,44Mb
-Phần ghi thông tin của một đĩa
mềm là một tấm nhựa mỏng, được
tráng từ, hình vành khăn.
-Để định vị thông tin trên đĩa, đĩa
được chia thành những hình quạt
bằng nhau (sector)
-Trên mỗi sector, thông tin được ghi
trên các rãnh tròn đồng tâm gọi là
các track.
21/169
A1
b. Đĩa cứng
-Đĩa cứng có dung lượng rất lớn
và tốc độ đọc ghi rất nhanh
-Phức tạp hơn đĩa mềm về mặt
vật lý
-Cách định vị thông tin tương tự
như đĩa mềm
c. Đĩa Compact
-có mật độ ghi thông tin rất các và
khối lượng lớn
-để ghi dữ liệu vào đĩa cần phải có
ổ ghi và chương trình ghi đĩa 22/169
A1
5. Thiết bị vào
- là các thiết bị cho phép đưa
thông tin vào máy tính
a.Bàn phím
- gồm các phím được phân
hai loại: phím ký tự và phím
chức năng
- khi gõ một phím thì mã
tương ứng của phím được
truyền vào máy
23/169
A1
b.Chuột
- dùng để thực hiện một
lựa chọn nào đó thay
thế một số thao tác trên
bàn phím
c.Máy quét
- là thiết bị đưa hình ảnh
vào máy tính
24/169
A1
6. Thiết bị ra
a.Màn hình
-cho thấy các kết quả được làm
việc trên màn hình, gồm văn
bản hay hình ảnh, hay các
đoạn phim.
b.máy in
-để in kết quả lên giấy. có nhiều
loại: in kim, in phun, in laser,…
25/169
A1
V. Tổng quan hệ điều hành
•Bất kỳ máy tính muốn hoạt động đều phải
thông qua các chương trình gọi là hệ điều
hành
•Hệ điều hành hiện nay gồm:
MS Dos
NC – Norton command
Window: Win 98, Win 2000, Win XP,..
•Hệ điều hành gồm tập các lệnh cơ sở điều
khiển hoạt động xuất nhập dữ liệu. một phần
sẽ được nạp ngay vào bộ nhớ khi máy khởi
động và phần còn lại được nạp khi nào cần
thiết 26/169
A1
29/169
PHẦN
A1 II:TỔNG QUAN GIẢI QUYẾT VẤN ĐỀ-BÀI TÓAN TRÊN
MÁY TÍNH
•việc giải một bài toán trên máy tính điện tử là một
quá trình phức tạp bao gồm nhiều giai đoạn và
lập trình chỉ là một trong các giai đoạn. Gồm các
bước
•bước 1: xác định vấn đề - bài toán
nhằm phát biểu chính xác vấn đề - bài toán => làm
rõ những yêu cầu mà người sử dụng đòi hỏi
•bước 2: lựa chọn phương pháp giải
có thể có nhiều cách khác nhau để giải quyết vấn
đề. Các phương pháp có thể khác nhau về thời gian
thực hiện, chi phí lưu trữ, độ chính xác,… => lựa
chọn phương pháp thích hợp giải bài toán 31/169
A1
32/169
A1
1.Thuật toán
• là một tập các lệnh hay chỉ thị nhằm hướng
dẫn việc thực hiện một công việc nào đó
• thuật toán bao gồm một dãy hữu hạn chỉ thị
rõ ràng và có thể thi hành được để hướng
dẫn thực hiện hành động nhằm đạt được
mục tiêu đặt ra
• => thuật toán là sự thể hiện của một
phương pháp để giải quyết một vấn đề
34/169
A1
1. Thuật toán
•ví dụ: xây dựng thuật toán giải phương trình bậc hai
1.nhập hệ số a,b,c
2.tính D=b2 - 4*a*c
3.xét dấu D:
nếu D>0: thực hiện tính nghiệm theo công thức
x1=(-b-sqrt(D))/(2*a);
x2=(-b+sqrt(D))/(2*a);
Thông báo lên màn hình phương trình có hai nghiệm
phân biệt
Nếu D=0: thì thông báo phương trình có nghiệm kép –
b/(2*a)
Nếu D<0: thông báo phương trình vô nghiệm 35/169
A1
38/169
A1
A A
Vào/Ra dữ liệu
Thực hiện Gọi Chương
công việc A trình con A
Phép Sai
thử B B Begin End
Đúng
39/169
A1
Đọc N
S:=0; i:=0
S:=S+1
i:=i+1
Sai
i>N
Đúng
In S ra
End
40/169
A1
V. Một số thuật toán thông dụng
1.Thuật toán số học:
b.Thuật toán kiểm tra số nguyên tố:
•Vấn đề: cho một số nguyên dương p. kiểm
tra xem p có phải là một số nguyên tố
không?
•ý tưởng:
nếu p=1: thì p không là số nguyên tố
nếu p≠ 1: kiểm tra các giá trị k từ 2 đến p-1
nếu có k là ước của p thì kết luận p không là
nguyên tố. Còn ngược lại, nếu không tồn tại k
mà p chia kết cho k thì p là số nguyên tố
41/169
A1
a. Thuật toán kiểm tra số nguyên tố
• Nhập: số p nguyên dương
• Xuất: kết luận p có nguyên tố hay không
• Thuật toán:
1. if p=1 then
begin
xuất: p không là nguyên tố;
dừng thuật toán
end
2. co:=TRUE;
3. for k:=2 to p-1 do
if (k là ước của p) then
begin
co:=FALSE;
ngắt vòng lặp;
end
4. if co=TRUE then
xuất: p là số nguyên tố
else
xuất: p không là số nguyên tố
42/169
A1
b. Thuật toán tìm ước chung lớn nhất của hai số nguyên
43/169
A1
50/169
A1
CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN TRONG PASCAL
54/169
A1
{Phần tiêu đề }
PROGRAM ten_chuong_trinh; { dòng tiêu đề}
{Phần khai báo }
USE CRT, PRINTER; {gọi sử dụng các đơn vị chương trình}
LABEL… {khai báo nhãn}
CONST… {khai báo hằng}
TYPE… {khai báo kiểu dữ liệu mới}
VAR… {khai báo biến cho toàn chương trình}
59/169
A1
60/169
A1
- Ghi file vào đĩa cứng: bấm phím F2 và đặt tên bài theo quy tắc:
Tên gồm các chữ cái latinh và số dài không qua 8 ký
tự, không chứa dấu cách
Phần mở rộng mặc định là PAS(chương trình tự đặt)
61/169
A1
3. Chạy chương trình
- Bấm F9 để kiểm tra lỗi cú pháp
- Bấm Ctrl + F9 để chạy chương trình
- Bấm Alt + F5 để xem lại kết quả
- Để chạy được Turbo Pascal, cần hai tập tin sau là
đủ :
TURBO.EXE : tập tin chính của TP
TURBO.TPL : tập tin chứa các thư viện của TP
- Nếu muốn vẽ đồ họa thì phải có thêm các tập tin:
GRAPH.TPU, tập tin chứa thư viện đồ họa
*.BGI : các tập tin màn hình đồ họa
*.CHR : các tập tin tạo kiểu chữ 62/169
A1
63/169
A1
Integer
Real
Char
69/169
A1
4. Kiểu số thực
•để biểu diễn các giá trị có kiểu thực
•có các kiểu số thực thông dụng:
–real 2.9*10-39…1.7*1038
–single 1.5*10-45…3.4*1038
–double 5.0*10-324…1.7*10308
70/169
A1
71/169
A1
5. Các hàm số học chuẩn
74/169
A1
75/169
A1
•Ví dụ: viết chương trình đổi chữ hoa ra chữ thường và
ngược lại
PROGRAM VIDU;
Var ch, ch1: char;
begin
write(‘nhap ky tu:’); readln(ch);
if (ch>=‘A’) and (ch<=‘Z’) then
ch1:=Chr(ord(ch)+32)
else
ch1=Upcase(ch);
writeln(ch, ‘ duoc doi thanh ‘, ch1);
readln;
end.
76/169
A1
77/169
A1
1.2345600000E+02 123.456
79/169
A1
82/169
A1
2.Khai báo biến:
•Ví dụ:
Var x,y:real;
i,n: integer;
83/169
A1
TYPE
tên_kiểu_DL_mới= mô_tả_kiểu_DL_mới;
• Ví dụ:
type
color=(xanh,do,trang);
var c:color;
84/169
A1
4.Câu lệnh
• Xác định công việc chương trình thực hiện để
xử lý các dữ liệu.
• Các câu lệnh được phân cách nhau bởi dấu
(;)
85/169
A1
86/169
A1
CHƯƠNG II: CÂU LỆNH RẼ NHÁNH VÀ LẶP
• Thực hiện:
–tính giá trị của biểu thức <bt boolean>
–nếu biểu thức đúng (TRUE) thì thực hiện
<câu lệnh 1>, còn ngược lại thì bỏ qua
chuyển sang câu lệnh sau IF nếu ở dạng (1)
hoặc thực hiện <câu lệnh 2> nếu ở dạng
(2)
88/169
A1
• Sơ đồ thực hiện:
Sai Sai
bt boolean bt boolean
Đúng Đúng
Dạng 1 Dạng 2
89/169
A1
• Cho phép rẽ nhiều nhánh, thử và chọn một trong nhiều khả năng để
thực hiện
91/169
A1
Cú pháp:
Dạng 1: Dạng 2:
CASE <biểu thức> OF CASE <biểu thức> OF
Hằng 1: <câu lệnh 1>; Hằng 1: <câu lệnh 1>;
Hằng 2: <câu lệnh 2>; Hằng 2: <câu lệnh 2>;
…. ….
Hằng n: <câu lệnh n>; Hằng n: <câu lệnh n>
END; ELSE <câu lệnh n+1>;
END;
<biểu thức>: biểu thức trả lại giá trị kiểu vô hướng đếm
được
<hằng 1>, <hằng 2>,…: là các giá trị có thể nhận được
92/169
A1
•Thực hiện:
–Tính toán giá trị của <biểu thức>
–Tùy theo giá trị của biểu thức có
thể là <hằng 1>, <hằng 2>,… thì
sẽ thực hiện <câu lệnh 1>, <câu
lệnh 2>,… tương ứng
93/169
A1
96/169
A1
• Thực hiện
<biến đk> lần lượt nhận từng giá trị tại
từng vòng lặp từ <gtđầu> đến
<gtcuối>.
Tại mỗi bước lặp đều thực hiện
<câu lệnh> trong thân vòng FOR
97/169
A1
99/169
A1
100/169
A1
• Ví dụ 1: tìm UCLN của hai số
program USCLN;
uses crt;
var a, b, r :integer;
Begin
clrscr;
writeln('Nhap hai so can tim USCLN');
write('a = '); readln(a);
write('b = '); readln(b);
while b<>0 do
begin
r:= a mod b;
a:=b;
b:=r;
end;
writeln('Uoc so chung lon nhat cua a va b la: ', a);
readln;
end. 101/169
A1
102/169
A1
Program Timtuoicha_con;
uses crt;
var cha, con, nam:integer;
Begin
clrscr; nam:= 0;
repeat
write('Nhap tuoi cha = '); readln(cha);
write('Nhap tuoi con = '); readln(con);
until (cha>2*con);
repeat
begin
cha:=cha +1;
con:=con+1;
nam:=nam +1;
end;
until cha=2*con;
writeln('Tuoi cha gap 2 lan tuoi con sau ',nam, ' nam
nua.') ;
103/169
A1
CHƯƠNG V: KIỂU DỮ LIỆU MẢNG
I.Khái niệm và định nghĩa:
•Mảng là một tập hợp gồm nhiều phần tử có
cùng kiểu dữ liệu.
•Các phần tử của mảng được lưu trữ liên tiếp
nhau, vị trí của phần tử gọi là chỉ số.
•Các yếu tố để xác định mảng:
– Tên mảng
– Kiểu dữ liệu của các phần tử
– Kiểu dữ liệu và phạm vi của chỉ số
104/169
Định nghĩa mảng:
A1 •
Type
<kiểu mảng>=array[n1..n2] of <kiểu Dữ
liệu>
Var
a:<kiểu mảng>;
Hoặc:
Var
A:array[n1..n2] of <kiểu dữ liệu>
Trong đó:
n1, n2: là hai hằng xác định phạm vi chỉ số 105/169
A1
• Ví dụ:
TYPE
Mang=array[1..10] of
integer;
VAR
A,B,C: Mang;
X,Y: array[1..25] of char;
106/169
A1
107/169
A1 II.Ví dụ: Viết chương trình tính tổng hai mảng 10 pt.
109/169
A1
• Khai báo:
Type
tên-mảng=array[n1..n2,m1..m2] of
kiểu-dữ liệu
Var
tên-biến:tên-mảng;
• n1, n2,m1,m2: là các hằng số để xác
định số hàng và số cột của mảng
110/169
A1
111/169
A1
Ví dụ:
A= [ 1 2 3
2 3 5 ]
A[1,1] = 1 A[2,1] = 2
A[1,2] = 2 A[2,2] = 3
A[1,3] = 3 A[2,3] = 5
112/169
A1
114/169
A1
CHƯƠNG VI: DỮ LIỆU KIỂU XÂU
I.Khái niệm
•xâu ký tự là kiểu dữ liệu gồm một chuỗi
các ký tự trong bảng mã ASCII
115/169
A1
Trong đó:
VAR, string: là các từ khoá
Tên_biến: dài tối đa 10 ký tự viết liền nhau, bắt đầu bằng
chữ, sau đó có thể là số, dấu gạch dưới
n: kích thước biến 116/169
A1
•Ví dụ
Var Hodem: string[17];
Ten: string[7];
Dia_chi: String;
117/169
A1
118/169
A1
biến [i];
biến [i];
119/169
A1
120/169
A1
121/169
A1
123/169
A1
124/169
A1
Công dụng:
Thủ tục này dùng để xoá khỏi xâu St một xâu
con chứa Num ký tự kể từ vị trí Pos trở đi.
-Nếu Pos lớn hơn chiều dài xâu thì không có ký
tự nào bị xoá bỏ
-Nếu Pos + Num vượt quá chiều dài của xâu St
thì chỉ có các ký tự nằm trong phạm vi của xâu
kể từ vị trí Pos bị xoá bỏ.
-Nếu Pos nằm ngoài khoảng 1..255, hệ thống
sẽ báo lỗi
125/169
A1
126/169
A1
Công dụng;
Dùng để chèn xâu st2 vào vị trí pos của xâu
st1.
-Nếu Pos lớn hơn chiều dài xâu St1 thì St2 được
phép gán vào cuối xâu St1
-Nếu sau khi chèn xâu mà chiều dài vượt quá
chiều dài của xâu St1 thì những ký tự thừa bị xoá
bỏ và St1 chỉ chứa các ký tự bên trái nhất.
-Nếu Pos nằm ngoài khoảng 1..255, hệ thống sẽ
báo lỗi
127/169
A1
4. Hàm Length:
cú pháp: length(st);
Trong đó St là biểu thức xâu ký tự
Công dụng
Cho kết quả là chiều dài thực của biểu
thức xâu St.
Ví dụ
St:=‘123456789’
=> length(St) = 9 129/169
A1
130/169
A1
Begin
Writeln(‘Nhap ho ten’);
Readln(ho_ten);
Writeln(‘Nhap dia chi’);
Readln(dia_chi);
writeln(‘Thong tin vua nhap la:’);
Writeln(‘Ho ten la :’,ho_ten);
Writeln(‘Ky tu dau cua dia chi la :’,dia_chi[1]);
Readln;
End.
131/169
A1
CHƯƠNG VII: CHƯƠNG TRÌNH CON
I.Giới thiệu
Viết chương trình tìm ước chung lớn nhất
của bốn số: a, b, c, d
132/169
A1
133/169
A1
134/169
A1
–Thủ tục: là đoạn CTC chỉ thực hiện các thao tác mà
không trả lại giá trị sau khi thực hiện không thể
dùng trong biểu thức.
– Thủ tục được khai báo với từ PROCEDURE
135/169
A1
136/169
•Cấu trúc của chương trình có CTC như sau:
A1
PROGRAM ten_CT;
USE CRT, PRINTER;
…
VAR… {khai báo biến cho toàn chương trình}
PROCEDURE tên-thủ-tục(khai báo tham số);
BEGIN
…
END;
FUNCTION tên-hàm(khai báo các tham số): kiểu dữ liệu
BEGIN
…
END;
BEGIN {bắt đầu thân chươn trình chính}
…
END.
137/169
A1
IV.Định nghĩa hàm
Hàm được khai báo theo mẫu sau:
Function Tênhàm(tênthamsố: kiểuthamsố) : kiểugiátrị ;
{ Các khai báo dùng riêng trong hàm }
Const ...
Type ...
Var ...
Begin
Các lệnh của hàm thân hàm
tênhàm := biểu thức;
End;
Một hàm có đầy đủ các thành phần như một chương trình.
Thân của hàm là các lệnh được đặt giữa hai từ khóa Begin và
End, kết thúc bằng dấu chấm phẩy ";"
138/169
A1
142/169
A1
Program tham_so;
Var x, y : integer ;{biến toàn cục X }
Procedure CTC( a : integer; var b :integer ) ;
Begin
a : =10 +a ; b: = 5 +b;
Writeln(a:6, b:6);
end;
Begin
x : =20 ; y:=10 ;
CTC(x, y);
Writeln(x: 6, y:6); readln;
End.
144/169
A1
145/169
A1
IX.Ghi chú:
•Biến toàn cục và biến địa phương:
–Biến được khai báo trong chương trình chính
là biến toàn cục được dùng ở mọi nơi trong
chương trình
–Biến được khai báo trong CTC là biến địa
phương chỉ được sử dụng trong phạm vi
CTC mà biến được định nghĩa
146/169
A1
VD: tầm tác dụng của biến
Program bien;
Var X : integer ;{biến toàn cục X }
Procedure CTC ;
Var X : integer ; {biến địa phương}
Begin X:=10 ; end;
Begin
X:=20 ;
Writeln(X) ;
CTC;
Writeln(X);
End.
147/169
A1
Program giaithua;
Var n : byte ;{biến toàn cục X }
Giaithua:real;
Function GT( k : byte) : real ;
Begin
if k=0 then GT :=1
else GT := k*GT(k-1);
end;
Begin
Writeln(‘Nhap vao n = ’);readln(n);
GIAITHUA:=GT(n);
Writeln(N,’! = ’, GIAITHUA:5:3); readln;
End.
149/169
A1
CHƯƠNG VIII: KIỂU RECORD - FILE
150/169
A1
II. Mô tả kiểu Record
• Cú pháp: Cách 1:
TYPE
•Chú thích:
Tenkieu=Record –tenkieu: tên kiểu của
S1: T1; bản ghi được định nghĩa
S2: T2; –S1, S2, …: tên danh
… sách các trường được
End; định nghĩa
–T1, T2,…: tương ứng là
Var tenbien: tenkieu; các kiểu dữ liệu của các
trường S1, S2,…
151/169
A1
Cách 2:
Var
tenbien : Record
S1: T1;
S2: T2;
…
end;
152/169
A1
VD :
Var
HS: Record
Hodem: string[20];
Ten: string[7];
DV, DT, Dtin: integer;
DTB: real;
end;
153/169
A1
155/169
A1
• Ví dụ:
Readln(HS.Hodem);
Readln(HS.Ten);
Readln(HS.DV, HS.DT, HS. DTin);
Hs.DTB:=(HS.DV+ HS.DT+ HS.
DTin)/3;
156/169
A1
157/169
A1
• Ví dụ:
With HS do
begin
Readln(Hodem, Ten);
Readln(DV, DT, Dtin);
DTB:= (DV+ DT+ Dtin)/3;
end;
158/169
A1
–Gán (:=) : cho phép copy nội dung của hai biến
kiểu bản ghi với nhau
–So sánh bằng (=): so sánh xem hai bản ghi kiểu
Record có bằng nhau hay không
159/169
A1
160/169
A1
CHƯƠNG III: KIỂU DỮ LIỆU LIỆT KÊ VÀ ĐOẠN CON
163/169
A1
II. Kiểu đoạn con
• đoạn con là một tập hợp các giá trị liên
nhau theo một thứ tự nhất định.
• được khai báo bằng cách xác định phạm vi
mà giá trị có thể nhận
• cú pháp:
TYPE tênkiểu=hằng1..hằng2;
VAR tênbiến:tênkiểu;
• Ví dụ:
TYPE chuhoa=‘A’..’Z’;
VAR t:chuhoa; 164/169
A1
CHƯƠNG IV: KIỂU TẬP HỢP
1.Khai báo:
• tập hợp gồm nhiều giá trị có chung kiểu hợp
thành
• chỉ tạo được tập hợp các phần tử kiểu cơ
bản : byte, char, logic, liệt kê
• số phần tử tối đa của tập hợp: 256
• Khai báo :
TYPE Kkytu=SET OF char;
Kchuhoa=SET OF ‘A’..’Z’;
165/169
A1
2. Các phép toán trên kiểu tập hợp
• phép gán := : thực hiện gán một tập hợp cho
một biến được định nghĩa kiểu tập hợp
• Ví dụ: TapA:Kkytu;
TapB:Kchuhoa;
=> TapA:=[‘a’,’b’,’0’,’3’];
TapB:=[‘A’,’B’,’D’];
• Phép hợp + : hợp của tập A và B là tập hợp
gồm tất cả các phần tử hoặc thuộc A hoặc thuộc
B
• Phép giao * : giao của tập A và B là tập hợp
gồm các phần tử vừa thuộc A vừa thuộc B
• Phép hiệu - : hiệu của tập A cho tập B là tập
các phần tử thuộc A nhưng không thuộc B 166/169