Bài giảng Lập trình cho máy tính điện tử - Chương 4: Lập trình bằng Pascal
Thuật toán là một bảng hướng dẫn gồm hữu
hạn các mệnh lệnh, quy định chính xác các
thao tác hay phép toán mà máy tính điện tử cần
thực hiện một cách máy móc theo trình tự vạch
sẵn để giải quyết bài toán hay nhiệm vụ nào đó.
• Ví dụ để giải bài toán ax2 + bx + c = 0. Dù a, b, c
nhận giá trị như thế nào, có thể là các hằng số,
biểu thức hay đa thức thì người giải chỉ cần thực
hiện theo 3 bước sau:
1/ Tính giá trị delta
2/ Xét giá trị delta : nếu delta âm thì kết luận bài toán
vô nghiệm ngược lại bài toán có 02 nghiệm
3/ Tính nghiệm của bài toán theo công thức
Với 3 bước thao tác trên, người ta gọi đó là thuật
toán giải phương trình bậc 2.
ình
có nhiều cách khác nhau như nhập vào từ
bàn phím, nhập vào từ một tệp tin dữ liệu
hay nhập trực tiếp trong chương trình. Ở
đây chúng ta xem xét việc nhập dữ liệu
vào từ phàn phím.
• Để nhập dữ liệu vào từ bàn phím Pascal
cung cấp các quy cách như sau:
Read( [,,…, ]); Readln(<biến
1> [,,…, ]);
Readln;
• Khi nhập dữ liệu cho các biến thì giá trị của biến này
phải cách dữ liệu của biến kia ít nhất một ký tự khoảng
trống hoặc một ký tự Tab. Kết thúc việc nhập dữ liệu
bằng phím Enter.
• Tương tự như Write và Writeln, Readln sẽ tự động
chuyển con trỏ xuống đầu dòng dưới sau khi đã nhận
xong các giá trị cho các biến. Với quy cách Readln; thì
chương trình sẽ dừng lại cho đến khi người sử dụng ấn
phím Enter.
• Kết hợp thủ tục xuất và thủ tục nhập dữ liệu
• Khi nhập dữ liệu để giúp cho người sử dụng không bị
nhầm lẫn giá trị của biến này với biến khác thì trong quá
trình lập trình thường sẽ đưa ra dòng thông báo về biến
cần nhận giá trị trước khi thực hiện việc nhập dữ liệu
cho biến đó. Và người ta quen gọi đó là thủ tục xuất –
nhập dữ liệu (xuất ra một thông báo về biến và nhập dữ
liệu vào cho biến đó).
• Write();
Readln();
• Ví dụ: Nhập dữ liệu về tên, tuổi cho một sinh viên trong lớp
• Write(„Nhap ten sinh vien: „);
• Readln(TenSV);
• Write(„Nhap tuoi cua sinh vien: „);
• Readln(TuoiSV);
• Vậy khi thực hiện thủ tục Write(„Nhap ten sinh viên: „) sẽ đưa dãy ký
tự này ra màn hình rồi dừng lại để người sử dụng nhập dữ liệu cho
biến TenSV. Sau khi ấn Enter, con trỏ chuyển xuống đầu dòng dưới
(vì thủ tục nhập dữ liệu là Readln), thực hiện tiếp thủ tục
Write(„Nhap tuoi sinh vien: „) để đưa dãy ký tự này ra rồi dừng lại
chờ người sử dụng nhập giá trị cho biến TuoiSV. Theo cách này,
việc nhập dữ liệu trở nên dễ dàng rất nhiều cho người sử dụng,
khác với việc viết là Readln(TenSV, TuoiSV);
Một số ví dụ chương trình
đơn giản nhất
c. Một số ví dụ đơn giản về lập trình tuần tự
• Ví dụ 1: cho biết họ tên sinh viên cùng các
điểm thi tuyển sinh đại học ba môn Toán, Lý,
Hóa của sinh viên đó. Viết chương trình để
nhập dữ liệu, tính và in ra tổng điểm tuyển sinh
và điểm trung bình các môn thi tuyển sinh của
sinh viên đó.
Program Sinh_vien;
Var
• {Tinh toan}
• Tong := Toan + Ly + Hoa; T_binh := Tong/3 ;
• {In an}
• Writeln(„Tong diem thi tuyen sinh : „, Tong :5 :2) ;
• Writeln(„Diem thi tuyen trung binh: „, T_binh :5:2);
• Readln; End.
Ví dụ 2: cho biết chiều dài, chiều rộng của một hình chữ
nhật. Viết chương trình nhập dữ liệu, tính và in ra chu vi
và diện tích của hình chữ nhật đó.
• 4.4 Lập trình phân nhánh
• a. Câu lệnh phân nhánh
• Được dùng để giải quyết các bài toán khi bước kế tiếp
được hay không được thi hành phụ thuộc vào kết quả
của bước xử lý trước đó hay điều kiện của đầu bài đề
ra. Pascal cung cấp cho người sử dụng hai câu lệnh để
thực hiện công việc này đó là:
• IF … Then … Else … Case… of…
• Câu lệnh phân chương trình thành hai nhánh chính: Quy
cách lệnh:
• 1/ IF THEN ;
• 2/ IF THEN ELSE
• ;
• Theo lệnh này, nếu nhận giá trị
True thì máy sẽ thực hiện , còn nếu không thì
hoặc kết thúc (tức không làm gì cả) đối với quy cách thứ
nhất, hoặc máy sẽ đi thực hiện lệnh khác tức là
trong quy cách thứ 2. Như vậy quy cách thứ
nhất thực ra là quy cách thứ hai thu gọn với là
rỗng.
• Chú ý: trước Else không bao giờ có dấu chấm phẩy.
Sau từ khóa
• Then và Else là một câu lệnh.
Ví dụ để chia a cho b với điều kiện b0
viết như sau:
If b 0 Then t := a / b
Else
Writeln (' Mẫu số bằng 0 ! Không chia được ! ') ;
• Ví dụ 2: Cho biết tên công nhân, số lượng sản
phẩm mà người công nhân đó sản xuất ra trong
tháng, đơn giá tiền công mỗi sản phẩm và định
mức sản xuất đối với người công nhân đó. Viết
chương trình nhập dữ liệu, tính và in ra tiền
lương sản phẩm của người công nhân đó trong
tháng.
Biết rằng nếu số lượng sản phẩm của
người công nhân sản xuất ra trong tháng
cao hơn định mức thì người công nhân
đó được thưởng thêm 2% tiền lương sản
phẩm
• b. Câu lệnh ghép
• Câu lệnh ghép hay còn gọi là câu lệnh phức hợp được sử dụng để
giải quyết bài toán khi muốn thực hiện nhiều công việc được biểu
diễn bởi nhiều câu lệnh khi mà theo quy tắc viết lệnh của Pascal chỉ
cho phép viết một câu lệnh.
Quy cách: Begin
;
;
………………
; End;
Nằm giữa cặp từ khóa Begin… End là các câu lệnh cần thực hiện, cặp
từ khóa Begin … End sẽ ghép các lệnh này thành một lệnh ghép và
được hiểu như một lệnh duy nhất.
• Qua ví dụ này cho thấy vai trò của lệnh
ghép. Giả sử nếu viết một lệnh như sau:
• If a < b Then
• Max := b ; Min := a ;
• thì lúc này phải hiểu là lệnh Max := b được
thực hiện chỉ khi điều kiện a < b thỏa mãn,
còn lệnh Min := a luôn được thực hiện
trong mọi trường hợp.
Lệnh Goto và Nhãn Label
Quy cách
LABEL ;
…….
GOTO ;
……..
: ;
Câu lệnh rẽ nhiều nhánh
Quy cách 1:
CASE OF
,,...: ;
.. : ;
…..
: ;
END;
;
- Quy cách 2:
CASE OF
,,...: ;
.. : ;
…..
:
ELSE
;
END;
4.5 Lập trình có chu trình
Lập trình có chu trình (lặp)
• Chu trình được sử dụng để giải quyết bài toán
khi có thao tác hay nhóm thao tác được thực
hiện lặp đi lặp lại nhiều lần với các toán hạng
như nhau chỉ khác nhau ở giá trị dữ liệu đầu
vào. Pascal cung cấp cho người sử dụng ba câu
lệnh để thực hiện công việc này.
• - FOR … TO … DO…
• - WHILE … DO…
• - REPEAT … UNTIL …
• a. Chu trình số học
Chu trình số học là chu trình mà có khả năng sẽ cho
biết số lần thực hiện lặp lại các thao tác.
Quy cách 1:
For := To Do ;
Trong đó , và là các giá trị
kiểu vô hướng đếm được.
Khi thực hiện, đầu tiên sẽ được gán cho
rồi bắt đầu quá trình lặp bằng việc kiểm tra giá trị của có
lớn hơn so với không, nếu không lớn hơn thì thực hiện
sau Do, sau đó tự động chuyển giá trị của sang
giá trị kế tiếp, quá trình được lặp lại. Quá trình này kết thúc khi giá trị
vượt quá
Sau từ khóa Do chỉ được viết một lệnh,
trong bài toán trên do sau từ khóa Do
có tới ba lệnh nên phải sử dụng lệnh ghép.
Quy cách 2:
For := Downto Do
;
Tương tự như quy cách 1 nhưng khi thực hiện, sau khi
gán cho quá trình thực hiện lặp
bắt đầu bằng việc kiểm tra giá trị của có nhỏ
hơn so với hay không, nếu không nhỏ hơn
thì thực hiện sau Do, sau đó tự động chuyển giá
trị về giá trị kế trước đó, quá trình được lặp
lại. Chu trình kết thúc khi giá trị
nhỏ hơn .
• Chu trình logic While … Do…
• Quy cách:
• While Do ;
• Khi thực hiện máy sẽ kiểm tra giá trị của <Biểu
thức logic>, nếu nhận giá trị True thì sẽ
được thực hiện, sau đó quay lại kiểm tra giá trị
của ,…, chu trình kết thúc khi
trả giá trị False.
Ví dụ: Cho a là một số nguyên dương nhập
vào từ bàn phím và S = 1 + 2 + 3 + … Viết
chương trình tìm giá trị i sao cho S là giá
trị lớn nhất nhỏ hơn a.
Program Tim_so;
Var
A,I,s:integer;
Begin
Write(‘Nhap vao so nguyen duong a=‘);readln(a);
i:=0;s:=0;
While s<a do begin
S:=s+i;i:=i+1;end;
Writeln(‘ gia tri can tim la :’,i-1, ‘ Gia tri lon nhat la ‘, s,
‘ nho hon ‘, a);
Readln;end.
• Lưu ý sau từ khóa Do chỉ được viết một
lệnh và phải bao gồm cả thao tác làm thay
đổi giá trị của . Vì nếu
không có thao tác làm thay đổi giá trị
thì chu trình sẽ lặp vô
hạn mà không thể kết thúc.
• Chu trình logic Repeat … Until…
• Quy cách: Repeat
• ;
• ;
………….
;
• Until ;
• Khi thực hiện, máy sẽ thi hành các lệnh nằm giữa
Repeat … Until rồi kiểm tra giá trị của ,
nếu trả lại giá trị False thì chu trình được thực hiện lặp
lại. Chu trình kết thúc khi trả lại giá trị
True.
• Với chu trình logic Repeat … Until thì dù giá trị
của trả lại là True hay False
thì các lệnh nằm giữa Repeat … Until cũng
được thực hiện ít nhất một lần. Và cũng giống
như chu trình logic While … Do, giữa Repeat …
Until cần có thao tác làm thay đổi giá trị của
.
• Ví dụ: Viết lại chương trình tìm i sao cho S = 1 +
2 + 3 +… có giá trị lớn nhất nhỏ hơn giá trị A
nguyên dương nhập vào từ bàn phím với chu
trình logic Repeat … Until.
Program Tim_so_2;
Var
Begin
A, i, S: Integer;
Write(„Nhap vao so nguyen, duong A = „);
Readln(A); S := 0;
i := 0;
Repeat
i := i + 1; S := S + i;
Until S > A;
Writeln(„So can tim la „, i - 1, „ de S co gia tri lon nhat
nho hon „, A);
Readln; End.
4.6 Dữ liệu mảng
Dữ liệu mảng
a. Khái niệm
Dữ liệu mảng là dữ liệu có cấu trúc, là tập hợp hữu hạn
các biến cùng kiểu dữ liệu. Số lượng các biến được xác
định khi khai báo mảng, để thao tác được với dữ liệu
cảu một biến trong mảng người ta dùng tên của biến
mảng và chỉ số chỉ thứ tự của biến đó trong mảng. Chỉ
số được đặt trong cặp „[ ]‟ (ngoặc vuông). Số lượng các
chỉ số chỉ số chiều của mảng, các chỉ số ngăn cách nhau
bởi dấu „,‟ (phẩy). Dữ liệu kiểu mảng được định nghĩa
bởi từ khóa Array.
Dữ liệu kiểu mảng
b/ Mảng một chiều
Quy cách 1:
TYPE
=ARRAY[Kiểu chỉ số] OF <Kiểu
phần tử>;
VAR
: ;
Type
C=Array[-30..50] Of Real;
Ten=Array[1..40] Of String;
Var
Dongia,Soluong:C;
Hotendem,Tengoi:Ten;
Var
Dongia,Soluong:Array[-30..50] Of Real;
Hotendem,Tengoi:Array[1..40] Of String;
Soluong[10]
Tengoi[30]
Quy cách 2:
VAR
: ARRAY[Kiểu chỉ số] OF
;
* Truy cập đến các phần tử của mảng
Tên mảng[Chỉ số mảng]
Ví dụ 1: Cho dãy A gồm n phần tử ( a1, a2, .
. ., an) , khi đó để gọi tên một phần tử bất
kỳ nào đó trong dãy A thì sẽ là ai , và
trong Pascal sẽ được ghi là a[i].
Chương 5
Mạng máy tính và Internet
1. Các cơ sở của mạng máy tính
2. Phân loại mạng theo phạm vi địa lý
3. Mạng cục bộ - LAN
4. Phần cứng của mạng
a.Card mạng và các dây cáp
b.Các máy chủ (Servers)
5. Phần mềm của mạng máy tính
a.Hệ điều hành mạng
b.Các chương trình ứng dụng riêng lẻ
c.Phần mềm dành cho nhóm công tác (GroupWare)
6. Mạng máy tính toàn cầu Internet
a.Sự hình thành Internet
b.Các thông tin trên Internet
c.Qui trình nối một máy tính vào mạng Internet
d.Các dịch vụ chủ yếu trên Internet
e.Các dịch vụ khác
f.Thương mại điện tử
File đính kèm:
Bài giảng Lập trình cho máy tính điện tử - Chương 4_Lập trình bằng Pascal.pdf

