Các hàm chuẩn

Một phần của tài liệu giáo trình tin học đại cương (Trang 43)

 Các hàm số học:

- Hàm ABS (x):Cho giá trị tuyệt đối của x. VD: ABS(5) =5

ABS(-5) =5

- Hàm SQR (x): Cho giá trị của x2 của x. VD: SQR (5) =25

SQR (1) =1

- Hàm SQRT(x): Cho Giá trị căn bậc 2 của x với x>=0 VD:SQRT (36) =6

- Hàm cos(x): Cho Giá trị Cos x của x , Giá trị tính bằng Radian. - Hàm sin(x): Cho giá trị sin x của x (x tính bằng Radian). - Hàm.tan(x): cho giá trị tgx.của x (x:Radian)

- Hàm arctan(x): cho giá trị acrtg(x), x tính Radian - Hàm LN(x): cho giá trị cơ số e của x

- Hàm exp(x): cho giá trị eX

-Hàm SUCC(x): cho số nguyên tiếp theo của số nguyên x VD: SUCC(3)=4

- Hàm Pred(x): cho số nguyên đứng trước số nguyên x VD: Pred(5)=4

- Hàm TRUNC(x): cho giá trị phần nguyên của x VD: TRUNC(7.3)=7

- Hàm FRAC(x): cho giá trị phần thập phân của x VD: FRAC(7.3)=0,3

 Các hàm ký tự:

- Hàm SUCC(ch): cho ta ký tự đứng sau ký tự ch VD: SUCC(‘C’)=‘D’,SUCC(‘b’)=’c’

- Hàm Pred (ch); cho ta ký tự đứng trước ch VD: Pred(‘1’)=’0’

- Hàm CHR (n):cho ta ký tự tương ứng với số thứ tự trong bảng mã ASC II VD: CHR(65)=’A’

- Hàm ORD(ch): cho ta số thứ tự tương ứng với số ký tự ch trong bảng mãASC II VD: ORD(‘A’)=65

BÀI 3. KHAI BÁO BIẾN, HẰNG, BIỂU THỨC, CÂU LỆNH I. Khai báo hằng

- Hằng là các đại lượng không thay đổigiá trị, xác định và không thay đổi trong một chương trình. Được khai báo bằng một tên đặt trong phần khai báo const ở đầu chương trình.

- Cú pháp: const tên hằng = giá trị của hằng.

Mỗi dòng khai báo hằng được kết thúc bằng một dấu chấm phầy VD: Const n = 100

Const L =false Const A = (5*7)/ 4

II. Khai báo biến

- Biến là một đại lượng mà giá trị của nó có thể thay đổi trong chương trình, mỗi biến đều có một tên và kiểu dữ liệu nhất định

- Cách khai báo: var

Tên biến: kiểu dữ liệu của biến.

- Nếu nhiều biến có cùng một kiều dữ liệu ta có thể khai báo gộp, tuy nhiên giữa các biến phải ngăn cách bởi dấu phẩy.

- VD: var x: integer; m,n,y,z:real;

- Chú ý: Tất cả các biến được sử dụng đều phải dược khai báo sau từ khóa var.

III. Khai báo kiểu dữ liệu mới

- Đối với các kiểu dữ liệu cơ sở (real, integer, byte, char, Boolean), đã được pascal định nghĩa nên khi khai báo biến ta có thể dùng trực tiếp các kiểu dữ lệu này ngay. Còn các kiểu dữ liệu khác ta phải định nghĩa ra, mô tả ra một cách tường trình trong phần khai báo của chương trình sau từ khóa TYPE. Sau đó sẽ khai báo các biến thuộc kiểu dữ liệu mới mô tả.

- Cú pháp: type

Tên kiểu= mô tả xây dựng kiểu Sau đó khai báo biến với kiểu dữ liệu này - Vd: TYPE

color = (red,blue,green);

Var c:color; IV. Biểu thức

- Bao gồm một tập các toán tử tác động lên một tập các số hạng để thực hiện một công thức toán học

Vd: 3+ PI * sin(x);

- Các loại biểu thức bao gồm:

+ Biểu thức số học: là biểu thức cho kết quả giá trị số

+ Biểu thức logic: là biểu thức cho kết quả giá trị logic(đúng hoặc sai)

+ Biểu thức quan hệ: là biểu thức chỉ chứa các phép toán quan hệ và cho kết quả giá trị logic

+ Biểu thức xâu ký tự: là biểu thức cho kết quả hằng xâu ký tự - VD: (3-4*(2+5))/8

V. Câu lệnh

Câu lệnh được chia ra làm hai loại:

- Câu lệnh đơn giản gồm có: + Lệnh gán(:=) + Lời gọi procedure + Lệnh nhảy: go to

Begin… End; + Câu lệnh lựa chọn If…then…else…… Case….of….. + Các vòng lặp: For….to……do Repeat….write…. While….do…. + Câu lệnh with….. VI. Lệnh gán

- Phép gán được dung để gán giá trị của một biểu thức, một hằng vào một biến phép gán được ký hiệu là (: =)

- Cú pháp: <Biến>:=<Biến thức>

- VD: x:=6: Có nghĩa là biến x nhận giá trị bằng 6 Y:=18+y+SQRT(x);

------

BÀI 4: LỆNH NHẬP VÀ XUẤT DỮ LIỆU I. Lệnh in dữ liệu ra màn hình

-Để viết tư liệu ra màn hình ta sử dụng các thủ tục sau: + Write(gt1,gt2,…,gtn); (1)

+ Writeln(gt1,gt2,…,gtn); (2) + Writeln(3)

Trong đó: gt, gt2,…,gtn là các giá trị cần viết ra màn hình. Nó có thể là giá trị của hằng, biến hay biểu thức.

-Ý nghĩa: +Câu lệnh (1) viết các giá trị theo thứ tự ra màn hình và con trỏ ở sau giá trị cuối cùng khi viết xong.

+Câu lệnh (2) được thực hiện giống câu lệnh (1) chỉ khác khi viết xong con trỏ nhảy xuống đầu dòng tiếp theo

+Câu lệnh (3) không viết gì cả mà chỉ thực hiện di chuyển con trỏ xuống đầu dòng tiếp theo -VD: + Write (5); => 5 + Writeln (5); => 5 + Write (5) ; => 5 7 + Write (7) ; + Writeln (5); => 5 + Writeln (7); 7 II. Lệnh nhập - Để nhập dữ liệu từ bàn phím ta sử dụng các thủ tục sau : Read (b1,b2,…,bn);(1) Readln(b1,b2,…,bn);(2) Readln;(3)

+ Trong đó : b1, b2, …, bn là các biến vì chỉ là biến mà thôi. - Ý nghĩa :

+ Câu lệnh (1) cho phép nhập dữ liệu từ bàn phím vào các biến tương ứng. Con trỏ ở vị trí cuối cùng khi nhập xong.

+ Câu lệnh (2) thực hiện giống câu lệnh (1) chỉ khác con trỏ nhảy xuống đầu dòng tiếp theo khi nhập xong.

+ Câu lệnh (3) ngừng thực hiện chương trình cho đến khi ấn phím Enter.

III. Lệnh nhập xuất

Để nêu rõ giái trị được nhập người ta thường đưa ra các thông báo khi nhập giá trị đó và sử dụng kết hợp giữa Write, Readln như sau:

Write(‘nhập đáy lớn a =’); readln(a); Write(‘nhập đáy bé b=’); readln (b);

VD1: Viết chương trình tính diện tích hình thang với đáy lớn a, đáy bé b, chiếu cao h nhập

từ bàn phím.

Program hinhthang; Var a,b,s,h:real; Begin

Write(‘nhập đáy lớn a =’);readln(a); Write(‘nhập đáy bé b=’);readln (b); Write(‘nhập chiều cao h =’);Readln(h);

Write(‘dien tich la S =’,s:3:1); Readln;

End.

VD2:Tính diện tích hình tam giác với 3 số a, b, c tương ứng với 3 canh tam giác.

Var a,b,c,s,p:real; Begin

Write (‘nhập a,b,c =’);readln(a,b,c); p:=(a+b+c);

s:=sqrt (p(p-a)(p-b)(p-c)); write(‘diện tích tam giác là S=’,s:3:1); readln;

end.

BÀI 5: CÁC LỆNH CÓ CẤU TRÚC

I. Câu lệnh ghép

-Một nhóm câu lệnh đơn giản được đặt giữa hai chữ Begin và End sẽ tạo thành một câu lệnh hợp thành hay một lệnh ghép. -Cú pháp: Begin <Câu lệnh 1> <Câu lệnh 2> ………. <Câu lệnh n> End; -VD: Begin t:=x; x:=y; y:=t; end; II. Câu lệnh lựa chọn 2.1. Câu lệnh If: 2.1.1. Rẽ nhánh dạng khuyết:

 Cú pháp: if <Biểu thức Logic> theo <công việc>

Trong đó : + if , then là từ khóa.

+ <Biểu thức logic> là một biểu thức có kiểu logic + <Công việc> là một lệnh đơn hay lệnh ghép

Ý nghĩa : Khi gặp lệnh này máy sẽ được thực hiện như sau:

+ Nếu <Biểu thức logic> nhận giá trị đúng thì máy sẽ thực hiện <Công việc>

+ Nếu <Biểu thức logic> nhận giá trị sai thì máy bỏ qua <Công việc> và thoát ra khỏi câu lệnh

 Sơ đồ hoạt động

Ví dụ: Cho hai số nguyên a và b. Viết chương trình tìm giá trị lớn nhất của hai số này:

* Program

Var a,b: Integer Max: Integer Begin Biểu thức Logic Câu lệnh Thoát Sai Đúng

Write (‘mời nhập a=’);Readln(a); Write (‘nhập b=’);Readln(b);

max:=a;

If max < b then max:=b; Write (‘giá trị lớn nhất là:’,max:3); Readln;

End.

2.1.2. Rẽ nhánh dạng đầy đủ:

 Cú pháp: If < Biểu thức logic> Then <Công việc1> else <Công việc2>

Trong đó: - Biểu thức logi: là một biểu thức có kiểu logic - If, Then, Else: là các từ khóa

- <Công việc1>, <Công việc2>: là câu lệnh đơn hoặc lệnh ghép

 Ý nghĩa: Khi gặp lệnh này máy sẽ thực hiện như sau:

+ Kiểm tra < Biểu thức logic>

+ Nếu < Biểu thức logic> nhận giá trị đúng thì thực hiện <công viêc1) + Nếu < Biểu thức logic> nhận giá trị sai thì thực hiện <công việc2>

 Sơ đồ hoạt động:

Ví dụ: Viết chương trình tìm giá trị lớn nhất và nhỏ nhất của 2 số nguyên a,b

Program max_min;

Var a,b,max,min:Integer; Begin

Write (‘nhập a,b’);Readln(a,b) If (a>b) then begin

Max:=a; Min:=b; End Else Begin Max:=b; Min:=a; End; Write(‘max=’,max:3); Write(‘min=’,min:3); Readln; Biểu thức Logic

Công việc 1 Công việc 2

Thoát

Sai Đúng

2.2. Câu lệnh Case..of..  Cú pháp: Case <biểu thức> of Tên hằng 1:<lệnh 1>; Tên hằng 2:<lệnh 2>; …………. Tên hằng n:<lệnh n> Else <câu lệnh n+1>; End;

 Ý nghĩa : Khi gặp lệnh này máy sẽ thực hiện như sau:

+ Tính giá trị của biểu thức sau đó so sánh với các hằng.

Nếu kết quả thuộc hằng nào thì thực hiện lệnh tương ứng, còn nếu không trùng bất kỳ hằng nào thì thực hiện lệnh (n+1)

 Ví dụ 1 : 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 (<5 điểm) TB (5,6 điểm) Khá (7,8 điểm) Giỏi (9,10 điểm) Program tinhdiem; Var diem:Byte Begin

Write(‘nhập điểm :’);readln(điểm); Case điểm of 0..4:write(‘Loại yếu’); 5..6:write(‘Loại TB’); 7..8:write(‘Loại khá’); 9..10:write(‘Loại giỏi’) Else

Writeln(‘nhập điểm sai’); End;

Readln; End.

 Ví dụ 2: Viết chương trình cho biết số ngày cho 1 tháng khi biết tháng và năm. Tháng và

năm được nhập từ bàn phím. Program thangnam;

Var Sn,thang,nam:integer; Begin

Write(‘nhập tháng :’);Readln(tháng); Write(‘nhập năm :’);Readln(năm);

Case thang of

1,3,5,7,8,10,12:Sn:=31; 4,6,9,11:Sn:30;

2:if (nam mod 4)=0 then Sn:=28 Else

Sn:=29; End;

Readln; End.

 Bài Tập :

1/ Sử dụng cấu trúc case ..of để xác định số n có chia hết cho 4 hay không ? Nếu không thì còn dư bao nhiêu?. với n nhập từ bàn phím.

2/ Viết chương trình giải phương trình bậc 2 : ax2+bx+c=0, bậc 1 : ax+b=0.Với a,b,c nhập vào từ bàn phím.

3/Lập chương trình nhập số n và in ra giá trị că bậc hai n

BÀI 6: CÂU LỆNH LẶP I. Câu lệnh for

1.1. Sự hoạt động của For dạng tiến

 Cú pháp :

For <Biến ĐK>:=<Giá trị đầu> to <Giá trị cuối> do <Công việc> Trong đó : + For, to, do: là từ khóa.

+ <giá trị đầu>, <giá trị cuối>, <Biến ĐK> phải cùng một kiểu dữ liệu và là một trong các kiểu số nguyên, logic, ký tự.

 Ý nghĩa : Khi gặp lệnh này máy sẽ thực hiện như sau : - Bước 1: Gán <giá trị đầu> cho <Biến ĐK>

<BĐK>:=<giá trị đầu>

- Bước 2: Kiểm tra <BiếnĐK> có bé hơn hoặc bằng <giá trị cuối> hay không. Nếu đúng chuyển sang bước 3. Nếu sai chuyển sang bước 4.

- Bước 3: Thực hiện công việc sau DO sau đó tăng <Biến ĐK> lên một đơn vị rồi quay lại bước 2.

- Bước 4: Thoát khỏi vòng lặp. Sơ đồ hoạt động :  Ví dụ : Viết chương trình tính tổng : S=1+2+3+…+n Với n nhập từ bàn phím Program tinhtong; Var I,n,s:integer; Begin Write(‘nhập n =’);Readln(n); S:=0; For i:=1 to n do s:=s+i; Biến ĐK:= GTđầu Biến ĐK<=GTđầu Công việc

Biến ĐK:=Biến ĐK+1 End

Đ

Write(‘tong la :’,s:3:3); Readln;

End.

1.2. Sự hoạt động của vòng lặp For dạng lùi :

Cú pháp :

For <Biến ĐK>:=<Giá trị cuối> downto <Giá trị đầu> do <Công việc> Trong đó : + For, downto, do: là từ khóa

+ <giá trị đầu>, <giá trị cuối>, <Biến ĐK> phải cùng một kiểu dữ liệu và là một trong các kiểu số nguyên, logic, ký tự.

Ý nghĩa : Khi gặp lệnh này máy sẽ thực hiện như sau:

- Bước 1: Gán <giá tri cuối> cho <Biến ĐK> <BiếnĐK>:=<giá trị cuối>

- Bước 2: Kiểm tra <Biến ĐK> có lớn hơn hoặc bằng <giá trị đầu> hay không. Nếu đúng chuyển sang bước 3. Nếu sai chuyển sang bước 4.

- Bước 3: Thực hiện công việc sau DO sau đó giảm <Biến ĐK> xuống một đơn vị rối quay lại bước 2.

- Bước 4: Thoát khỏi vòng lặp.  Sơ đồ hoạt động : Ví dụ : Tính tổng sau : S=10+9+8+…+1. Program tinhtong; Var s,i:integer; Begin s:=0;

For i:=10 downto 1 do s:=s+i; Write(‘tổng là :’,s:5:3); Readln; End. Biến ĐK:= GTcuối Biến ĐK>=GTcuối Công việc

Biến ĐK:=Biến ĐK-1 End

Đ

II. Câu lệnh while…do  Cú pháp:  Cú pháp:

While <Biểu Thức ĐK> do <Công việc> Trong đó: - While, do: là từ khóa.

- <BTĐK> là một biểu thức có kiểu <Logic>

- Công việc có thể là lệnh đơn hay lệnh ghép. Nếu là lệnh ghép phải đặt giữa hai từ khóa Begin ..end

 Ý nghĩa: Khi gặp lệnh này máy thực hiện như sau:

- Bước 1: Kiểm tra <Biểu thức Logic>

+ Nếu <BT Logic> có giá trị đúng chuyển sang bước 2. + Nếu <BT Logic> có giá trị sai chuyển sang bước 3. - Bước 2: Thực hiện <Công việc> sau DO rồi chuyển sang bước 1 - Bước 3: Thoát khỏi vòng lặp.

 Sơ đồ khối :

Ví dụ: Viết chương trình tính tổng sau : S=1+2+3+…+n.

Program tinhtong; Var I,s,n:integer; Begin Write(‘nhập n=’);Readln(n); s:=0;i:=1; While i<=n do Begin s:=s+i; i:=i+1; end; write(‘tổng là :’,s:5:3); readln; end.

III. Câu lệnh repeat ..until

 Cú pháp : Repeat <Câu lệnh> Until <Biểu thức ĐK>

Ý nghĩa: Khi gặp lệnh này máy sẽ thực hiện : - Bước 1: Thực hiện công việc.

- Bước 2: Kiểm tra <Biểu thức ĐK>

- Nếu <Biểu thức ĐK> có giá trị đúng thì chuyển sang bước 3. - Nếu <Biểu thức ĐK> có giá trị sai thì chuyển sang bước 1.

Công việc Biểu thức ĐK

End Đ

- Bước 3: Thoát khỏi vòng lặp. Sơ đồ khối :  Ví dụ : Tính tổng S=1+2+3+…+n với n nhập vào từ bàn phím. Program tinhtong; Var I,n,s:integer; Begin Write(‘nhập n=’);Readln(n); s:=0;i:=1; Repeat s:=s+i; i:=i+1; Until i>n; Write(‘tổng là :’,s:5:3); Readln; End. ------ Công việc Biểu thức ĐK End Đ S

BÀI 7: KIỂU DỮ LIỆU CÓ CẤU TRÚC MẢNG( ARRAY) I. Định nghĩa

Là một kiểu dữ liệu có cấu trúc bao gồm một số cố định các phần tử có cùng chung kiểu dữ liệu, cùng tên, chỉ khác nhau về chỉ số. Mảng gồm hai loại

+ Mảng một chiều: là mảng mà các phần tử của nó được bố trí theo kiểu tuyến tính

+ Mảng hai chiều: là mảng mà các phần tử của nó được bố trí theo kiểu

II. Mảng một chiều

2.1. Khai báo mảng một chiều.

Có hai cách để khai báo:

 Khai báo gián tiếp: - Cú pháp:

TYPE

Tên mảng=array[Kiểu_chỉ_dẫn] of Kiểu_phần_tử; Var biến mảng:tên mảng;

- Ví dụ:

TYPE

Hocsinh= array[1..50] of record; Var a: hocsinh;

 Khai báo trực tiếp: - Cú pháp:

Biến mảng=array[Kiểu_chỉ_dẫn] of Kiểu_phần_tử;

- Ví dụ:

Var a=array[1..50] of integer;

2.2. Cách truy nhập vào các phần tử:

- Cách truy nhập một phần tử vào mảng ta viết như sau:

Biến mảng[chỉ số phần t];

- Ví dụ: a[4]: Truy nhập đến các phần tử có chỉ số là 4

2.3. Nhập xuất dữ liệu cho các phần tử của mảng một chiều

- Ví dụ : Lập chương trình nhập một mảng một chiều gồm n số nguyên, in giá trị của mảng vừa nhập ra màn hình. Program mang; Var A: array[1..15]of integer; I, n:integer; Begin

Write(‘ nhap so phan tu=’);readln(a); For i:=1 to n do

Begin

Write(‘a[‘,I,’]=’);readln(a[i]); End;

Write(‘gia tri mang vua nhap’); For i:=1 to n do

Write(a[i]:4); Readln;

End.

- Sắp xếp giảm dần:

Để sắp xếp một mảng, các phần tử trong mảng cần phải được so sánh với những phần tử còn lại. Cách tốt nhất để sắp xếp một mảng, theo thứ tự giảm dần, là chọn ra giá trị lớn nhất trong mảng và hoán vị nó với phần tử đầu tiên. Một khi điều này được thực hiện xong, giá

Một phần của tài liệu giáo trình tin học đại cương (Trang 43)