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