Giáo án Giáo trình Ngôn ngữ pascal

1. Cần ý thức được điều này: Máy tính làm tính toán rất nhanh, nhưng chỉ làm được một số phép toán đơn giản. Con người tính toán chậm hơn nhiều so với máy tính nhưng biết cách giải một bài toán phức tạp bằng cách kết hợp nhiều bài toán đơn giản. Vậy, muốn lập trình giải được một bài toán phức tạp được nhanh con người phải suy nghĩ để hướng dẫn cho máy tính giải một chuổi các bài toán đơn giản.

doc32 trang | Chia sẻ: vivian | Lượt xem: 1506 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo án Giáo trình Ngôn ngữ pascal, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ác số nguyên. Nhập vào một số nguyên, hãy chèn số nguyên đó vào vị trí thứ k của mảng. Program VD5; Uses CRT; Var a:array[1..100] of Integer; i,k, n:Integer; BEGIN Write(‘ Nap vao so phan tu cua mang n=’);readln(n); For i:=1 to n do Begin Write(‘ Nhap vao phan tu thu a[‘,i,’]=’); readln(a[i]); end; Repeat Write(‘Nhap vao vi tri can loai bo k=’); readln(k); Until (k>=1) and (k<=n); Write(‘ Nhap vao so b=’); readln(b); For i:=n+1 downto k+1 do a[i]:=a[i-1]; a[k]:=b; For i:=1 to n+1 do Begin Writeln(‘Day sau khi chen them so’,b,’ vao vi tri thu’, k,’ la:’); Write(a[i]:6); End; readln; END. BÀI TẬP VỀ MẢNG MẢNG 2 CHIỀU CHƯƠNG VI: CHƯƠNG TRÌNH CON HÀM VÀ THỦ TỤC Trong quá trình viết chương trình có những đoạn chương trình thực hiện một công việc nào đó được xuất hiện nhiều lần. Để tránh viết lại đoạn chương trình này, ta chuyển đoạn chương trình thành một chương trình con, mỗi lần cần thì gọi nó. Chương trình con thường được viết nhằm thực hiện một công việc. Người sử dụng chương trình con chỉ cần biết tên chương trình và truyền đầy đủ số liệu cho các tham số là chương trình con có thể thực hiện mà không cần biết thuật toán và các phép sử lý trong thân chương trình con. Khi lập trình, người lập trình thường phân bổ bài toán ra nhiều công việc cụ thể, mỗi công việc cụ thể được viết dưới dạng một chương trình con. Cách viết này giúp cho người lập trình nhìn chương trình một cách thoáng đạt, dễ quản lý và gỡ rối đồng thời tiết kiệm tối đa bộ nhớ. Ví dụ: Để tính tổng hai số nguyên, người lập trình viết ra một chương trình con với tên là TONG(a,b), avà b là hai tham số đại diện cho hai số nguyên bất kỳ. Khi muôn stinh stổng hai số 6 và 7 ta chỉ việc gọi chương trình con như sau: TONG(6,7) là ta sẽ có kết quả là 11. Chương trình con trong Pascal được chia làm hai loại: + Loại 1: Hàm + Loại 2: Thủ tục 1. Hàm Cấu trúc của hàm có dạng: FUNCTION Ten_ham(Tham số 1; Tham số 2,......): kiểu trả về; Var Khai báo các biến cục bộ sử dụng trong hàm; Begin các lệnh tính toán; Ten_ham:=giá trị hàm nhận; End; Lời gọi hàm: Ten_ham(danh sách các tham số thực sự) Ví dụ: Lập trình tính tổng diện tích hai hình tam giác. Viết hàm tính diện tích hình tam giác. Program tam_giac; Var a1,h1,a2,h2 ,tong: real; Function dientich(a,h:real):real; Begin dientich:=a*h/2; end; BEGIN Write(‘ Nhap vao canh day cho tam giac 1 a1=’);Readln(a1); Write(‘ Nhap vao canh day cho tam giac 1 h1=’);Readln(h1); Write(‘ Nhap vao canh day cho tam giac 2 a2=’);Readln(a2); Write(‘ Nhap vao canh day cho tam giac 2 a2=’);Readln(h2); tong:=dientich(a1,h1)+dientich(a2,h2); Writeln(‘tong dien tich hai hinh la:’,Tong:8:2); Readln; END. 2. Thủ tục Cấu trúc của thủ tục có dạng: PROCEDURE Ten_thu_tuc(Tham so 1:kiểu;Tham số 2: Kiểu;.........;Var Tham số k: kiểu; Var tham số (k+1);....); Var Khai báo các biến cục bộ; Begin Các lệnh tính toán; End; Lời gọi thủ tục: Ten_thu_tuc(Danh sách các tham số thực sự); Ví dụ:Viết thủ tục đổi chỗ hai số. Sau đó dùng để viết chương trình sắp xếp ba số a, b, c theo thứ tự tăng dần. Program sapxep; Var a,b,c:integer; {**********************************************} Procedure doicho(Var a:integer;var b:integer); Var tg:integer; Begin tg:=a; a:=b; b:=tg; end; {Chuong trinh chinh} BEGIN Write(‘ Nhap vao a=’);Readln(a); Write(‘ Nhap vao b=’);Readln(b); Write(‘ Nhap vao c=’);Readln(c); if a>b then doicho(a,b); if a>c then doicho(a,c); if b>c then doicho(b,c); Writeln(‘ket qua la:’,a,b,c); readln; END. 3. Sự khác nhau giữa thủ tục và hàm Sự khác nhau cơ bản giữa hàm và thủ tục: hàm cho một giá trị thông qua tên hàm và hàm có thể tham gia vào các biểu thức tính toán, thủ tục không cho một giá trị nào cả. Trong thân hàm bao giờ cũng có giá trị gán cho tên hàm. Các tham số khác sau tên hàm và tên thủ tục gọi là các tham số hình thức (hay còn gọi là đối). Trong thủ tục, các tham số hình thức có các loại: các tham số được khai báo sau chữ Var gọi là tham số biến, các tham số khai báo không có chữ Var gọi là tham số giá trị. Trong hàm chỉ có tham số giá trị. Tham số thực sự là các tham số dùng trong lời gọi hàm hay thủ tục. Danh sách các tham số thực sự trong lời gọi phải tương ứng với danh sách các tham số hình thức trong khai báo chương trình con và chúng phải tương ứng về kiểu. Trong thủ tục, các tham số giá trị thường là các biến để chứa dữ liệu đưa vào thủ tục; các tham số biến là các biến mà kết quả tính toán của thủ tục sẽ chứa vào đó khi ra khỏi thủ tục, ta có thể dùng chúng để tính toán tiếp. 4. Biến toàn cục biến cục bộ Biến toàn cục là biến khai báo ở đầu chương trình chính, tồn tại trong suốt thời gian làm việc của chương trình. Có thể sử dụng và làm thay đổi giá trị của biến toàn cục nhờ các câu lệnh trong chương trình chính cũng như trong tất cả các chương trình con. Biến cục bộ là biến được khai báo ở đầu một chương trình con. Chúng được cấp phát bộ nhớ khi chương trình con được gọi tới và bị xoá khi máy ra khỏi chương trình con. Biến cục bộ có giá trị trong chương trình con và tất cả các chương trình con khác nằm trong chương trình con này. Nếu tên biến cục bộ của một chương trình con trùng với một tên biến toàn cục thì máy cũng không bị nhầm lẫn, máy sẽ dùng hai ô nhớ khác nhau để lưu trữ hai biến, khi ra khỏi chương trình con biến cục bộ bị xoá. Khi gặp một lời gọi tới chương trình con, máy sẽ thực hiện các bước sau: Cấp phát bộ nhớ cho các đối, các biến cục bộ. Truyền giá trị của các tham số thực sự cho các tham số giá trị tương ứng, truyền địa chỉ của các tham số thực sự ứng với tham số biến cho các tham số biến của thủ tục. Thực hiện các lệnh trong chương trình con, trong khi thực hiện chương trình con, các biến cục bộ và các tham số giá trị có thể bị biến đổi nhưng không ảnh hưởng tới các biến bên ngoài. Trái lại mọi thay đổi của tham số biến trong chương trình con sẽ kéo theo sự thay đổi của tham số thực sự tương ứng (vì có sự truyền theo địa chỉ). Do đó, khi ra khỏi chương trình con, các tham số thực sự ứng với tham số biến vẫn giữ được giá trị mới nhất do chương trình con tạo ra. Thực hiện xong các lệnh của chương trình con, máy giải phóng các đối và các biến cục bộ, trở về nơi gọi chương trình con. Lấy kết quả thực hiện chương trình con: nếu là hàm thì lấy kết quả ở tên hàm, nếu là thủ tục thì lấy kết quả ở tham số thực sự ứng với tham số biến. Khi cần lấy duy nhất một giá trị từ chương trình con thì ta lập một Function, khi cần lấy từ hai giá trị trở lên từ chương trình con hoặc không lấy giá trị nào thì ta phải lập Procedure. 5. Một số ví dụ về hàm Ví dụ 1: Viết hàm tính tổng các số chẵn từ a đến b (a, b nguyên) Bước 1: Phân tích thuật toán - Nhập vào hai số a và b - Khởi động biến t:=0 - Dùng một vòng lặp với biến điều khiển là i chạy từ a cho đến b, trong quá trình chạy kiểm tra xem i chẵn (i mod 2=0) thì cộng i thêm vào tổng (t:=t+i). - Kết thúc Bước 2: Sơ đồ thuật toán (bạn đọc tự viết) Bước 3: Văn bản chương trình Program tinhtong; Var a,b:integer; {**************************************************} Function tong(a,b:integer):integer; Var i,t:integer; Begin t:=0; For i:=a to b do If i mod 2=0 then t:=t+i; tong:=t; BEGIN Write(‘Nhap a=’);Readln(a); Write(‘Nhap b=’);Readln(b); Writeln(‘Tong cua cac so chan trong doan a va b la tong=’,tong(a,b)); Readln; END. Ví dụ 2: CHƯƠNG V KIỂU XÂU KÝ TỰ Xâu ký tự là kiểu dữ liệu có cấu trúc dùng để xử lý các xâu ký tự. Xâu ký tự giống như kiểu mảng nhưng có những điểm khác nhau như: Số phần tử của mảng phải được xác định ngay khi khai báo, xâu ký tự có thể thay đổi số lượng các ký tự trong xâu. 1. Khai báo kiểu xâu. Var Tên_bien:String[n]; Trong đó: - N là ký tự cực đại có thể của xâu - Chiều dài tối đa của xâu là 255 - Nếu trong khai bao ta chỉ viết: Var ten_bien:String; thì pascal ngầm hiểu là độ dài xâu là 255. Ví dụ: Giả sử để lưu trữ Họ tên của một người ta khai báo như sau: Var ten:string[25]; {Họ tên có thể chứa tối đa 25 ký tự} - Giả sử ta có xâu ST=’ Thanh pho hai phong’ Để chỉ ra ký tự thứ i của xâu trên ta viêt theo cách sau: Tên_xâu[số thứ tự của ký tự trong xâu] theo trên ta viết ST[i], như ST[5] =’h’ 2. Cấu trúc của xâu ký tự Trong bộ nhớ một xâu chiếm số byte bằng số ký tự cực đại để chứa các ký tự của xâu cộng thêm một byte đầu tiên chứa ký tự mà mã ASCII của ký tự này là số ký tự hiện có của xâu ký tự . Ví dụ: VAR st:string[25]; và ST:=’ HAI PHONG’; Khi đó độ dài xâu là 9 ký tự mặc dù độ dài cực đại của xâu là 255 ký tự và cấu trúc của xâu ST như sau: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 255 chr(9) H A I P H O N G * * * * * * * * .. .. .. * Ký tự * biểudiễn ký tự không xác định. 3. Nhập và in xâu ký tự Muốn in một xâu ký tự ST ra ngoài màn hình ta dùng lệnh Write(st) hoặc Writeln(st). Để đọc các ký tự cho xâu st với độ dài thực sự là số ký tự gõ vào từ bàn phím ta dùng lệnh Readln(ST); Ví dụ: Nhập vào họ và tên của một người và in họ tên của người đó ra màn hình. Program xau; Var ho_ten:string[25]; BEGIN Write(‘nhap vao ho ten:’);readln(ST); Writeln(ST); readln; END. 4. Các phép toán trên xâu ký tự - Phép nối xâu ‘Hai’ + ‘phong’=’Haiphong’ - Các phép toán so sánh: Khi co hai xâu, các ký tự được so sánh từng cặp một từ trái qua phải theo giá trị của bảng mã ASCII. Nếu hai xâu có độ dài khác nhau song số ký tự giống nhau đến độ dài xâu ngắn nhất thì xâu có độ dài ngắn hơn được coi là bé hơn. Ví dụ: ‘ABC’=’ABC’ có giá trị là true ‘ABC’=’AB’ có giá trị là FALSE ‘ABCD’>’ABEF’ có giá trị là True - Xâu ký tự cũng tham gia vào các phép gán. 5. Các thủ tục và hàm trên xâu ký tự *Các thủ tục a. DELETE(ST,Pos,Num): St: Biến kiểu String Num: Số ký tự cần xoá Pos: Vị trí bắt đầu xoá Thủ tục này dùng để xoá đi một số ký tự là Num bắt đầu từ vị trí Pos Ví dụ: Nếu St:=’ Hai phong’ DELETE(st,3,2) cho kết quả st=’Haphong’

File đính kèm:

  • docGiao trinh Pascal Ninh Hoa.doc