Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (153.48 KB, 25 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
Bài 1: Ngôn ngữ lập trình pascal.
<b>I/ Giíi thiƯu </b>
- Giáo s Wirth, trờng đại học Thụy Sĩ viết năm 1970 nhằm giúp học sinh
làm quen, tiếp cận với máy tính.
- Ơng lấy tên nhà bác học ngời Pháp là Pascal để đặt tên cho ngôn ngữ lập
trình của mình .
- Đặc điểm: Nó là ngơn ngữ lập trình có cấu trúc, dễ đọc, dễ hiểu.
<b>II/ Khởi ng v kt thỳc.</b>
<i><b>1) Chạy trong môi trờng window.</b></i>
- Khi động nh những chơng trình ứng dụng bình thờng.
<i><b>2) Chạy trong môi trờng Dos.</b></i>
C:>- gõ đờng dẫn\Turbo .exe
* Chú ý : Muốn biết đờng dẫn đến tệp tin cần tìm thì ta sử dụng :
C :>- Dir turbo.exe /b/s
VD: C: >-TP\bin\turbo.exe
<i><b>3) Thoát khỏi chơng trình.</b></i>
C1 : Vào file \ exit
C2: Nhấn tổ hợp phím Alt+X.
<b>III/ Soạn thảo chơng trình.</b>
<i><b>1) Mở mới: file\new</b></i>
<i><b>2) M tp tin ó ghi vào đĩa: file\open</b></i>
hoặc bấm F3
<i><b>3) Ghi tập tin vào đĩa: </b></i> file\save hoặc F2
<i><b>4) Dịch chơng trình: </b></i> bấm Alt+F9
<i><b>5)Chạy chơng trình:</b></i> Ctrl+F9
<i><b>*Chú ý: Pascal là chơng trình biên dịch nghĩa là nó dịch hết chơng trình</b></i>
sang ngơn ngữ máy nếu khơng có lỗi chơng trình mới đợc thực hiện. Chính vì
vậy trong chơng trình Pascal thờng có 2 lỗi sảy ra:
- Lỗi cú pháp: chơng trình sẽ khơng đợc thực hiện và sẽ có thơng báo lỗi
- Lỗi thuật tốn: chơng trình chạy nhng ra kết quả sai.
<b>IV/ Bé kÝ tù, tõ khãa, tªn gäi.</b>
<i><b>1) Bộ kí tự : là các kí tự đợc sử dụng trong Pascal. Đó là bộ kí tự chuẩn</b></i>
của Mĩ là ASCII gồm có 256 kí tự đợc mã hóa theo các số tơng ứng.
<i><b>2) Từ khóa: là các từ do Pascal định nghĩa sẵn, em khơng đợc đặt chùng.</b></i>
VD: program, var, uses, label, array,type,...
C©u lÖnh: write; read; if...then; case...of; while... do; repeat...until;
for...to...do,...
<i><b>3) Tên gọi:dùng để chỉ tên biến hoặc hằng sử dụng trong chơng trình đợc</b></i>
đặt bằng chữ cái không phân biệt chữ thờng hay chữ hoa không có kí tự trắng.
12A S (vì bắt đầu là chữ số)
lop hoc S (vì trong tên có ký tự trắng)
Bi 2:D liu n gin chun
<i><b>1. Dữ liệu kiểu kí tự (char) :là các kí tự có trên bàn phím.</b></i>
Các hàm kí tự :
ORD(kí tự ): trả về sè thø tù cđa kÝ tù trong b¶ng ACSII.
Chr (n) : tr¶ vỊ ‘kÝ tù’ cđa thø tù n trong b¶ng ACSII.
Upcase (kÝ tù) : kÝ tù hoa t¬ng øng.
VÝ dơ : Ord (‘a’) = 97
Chr (97) = a
Upcase (‘a’) = A
<i><b>2. D÷ liƯu kiĨu sè nguyên .</b></i>
tên Phạm vi biểu diễn
<i><b>byte</b></i> 0 .. 255
<i><b>shortint</b></i> -128 .. 127
<i><b>word</b></i> 0 .. 65535
<i><b>integer</b></i> -32768 .. 32767
<i><b>longint</b></i> -2174483648 .. 2174483647
<b>C¸c phÐp to¸n</b>
* :nh©n +: céng
/ :chia -: trõ
MOD : phÐp chia lÊy phÇn d
vd : 10 mod 3 = 1 (10 chia 3 d 1)
DIV : phÐp chia lÊy phần nguyên
vd : 10 div 3 = 3
<b>Mét sè hµm</b>
ABS( n ) = trị tuyệt đối của n
SQR( x ) = x2
SQRT( x ) = căn bậc 2 của x
Inc(n) = n + 1
Random( n ) = sè nguyªn ngÉu nhiên từ 1 ... n .
<i><b>3.Dữ liệu kiểu số thực (Real).</b></i>
- Ph¹m vi biĨu diƠn rÊt lín, cã thĨ biĨu diễn các số có phần thập phân.
Có tất cả các phép toán số học trừ phép Mod và Div
<i><b>4 . D÷ liƯu kiĨu logic ( Boolean )</b></i>
+ AND : cho kết quả là T khi tất cả các toán hạng đều T.
<b>Cú pháp: (biểu thức đk 1) AND (biểu thức đk 2) AND (..)</b>
VD : ( 3 > 7 ) and ( 3 = 1+2 ) = F
( 3 < 7 ) and ( 3 = 1 +2 ) = T
+ OR : Cho kết quả là T khi tồn tại 1 điều kiện T
<b>Cú pháp : (biĨu thøc ®k 1) OR (biĨu thøc ®k 2) OR (..)</b>
VD : (3 > 7) or ( 3 = 2 + 1 ) = T.
<b>bµi 3: h»ng, biÕn, kiĨu, biĨu thức và câu lệnh</b>
<b>I,Khai báo hằng </b>
Hng l i lng có giá trị khơng đổi trong suốt chơng trình.
<i><b>Cách khai báo</b></i>
Const<i> tên hằng = giá trị của hằng;</i>
VD: Const m=10;
pi=3,14;
chó ý: Sau tõ khãa Const liệt kê hết các hằng có trong chơng trình.
<b>II,Biến</b>
L i lợng có thể thay đổi giá trị. Biến của chơng trình là tên vùng nhớ lu
trữ dữ liệu.
<i><b>C¸ch khai b¸o biÕn:</b></i>
<b>Var</b> <i> tªn biÕn :kiĨu cđa biÕn </i>
VD : Var a: integer ; (<i>biến a có kiểu dữ liệu là integer nghĩa là nó chỉ</i>
<i>có khả năng nhận giá trị từ -32768 đến 32767 nếu trong chơng trình gán giá trị</i>
<i>lớn hơn hoặc nhỏ hơn thì biến sẽ bị tràn và cho kết quả khơng chớnh xỏc</i>)
x : real;
<b>III,Khai báo kiểu dữ liệu mới </b>
Là kiểu dữ liệu do lập trình viên tự dịch nghĩa.
<b>Type</b><i> tên dữ liệu mới =(các thành phần kiểu dữ liƯu míi);</i>
VD:
Type traicay =(cam, tao, xoai, dua); (<i>dữ liệu mới có tên là traicay</i>
<i>và chỉ nhận 4 loại trái có trong danh sách dà liệt kê</i>)
mau =(xanh,do ,tim,vang); (dữ liệu mới có tên là mau)
Var
a: traicay; (biến a có kiểu dữ liệu là trái cây vừa đợc định nghĩa ở trên)
m: mau;
<b>IV,BiĨu thøc</b>
Là cơng thức tính tốn để có 1 giá trị theo quy tắc nào đó.
Biểu thức gồm tốn tử và tốn hạng xếp xen kẽ nhau.Trong đó
<i>-Tốn tử:</i> là các phép toán tác động lên toán hạng
<i> ( )</i>: u tiên 1
<i>*, /, div, mod, and</i>: u tiªn 2
<i> +, -, or</i>: u tiên 3
<i>=, <>, >, <, >=, =<</i>: u tiên 4
<b>V,Câu lƯnh </b>
Xác định cơng việc mà chơng trình phải thực hiện. Các câu lệnh đợc phân
cách nhau bởi dấu ; (dấu chấm phẩy)
<b>VI,PhÐp g¸n</b>
Dùng để gán giá trị của 1 biểu thức, 1 hằng cho 1 biến
<i><b>tên biến: =giá trị 1 biểu thức </b></i>
VD: Var a,i:integer;
Begin
..
i:=3;
a:=7{biến a nhận giá trị =7}
i:=i + 1{biÕn i nhận giá trị = nó +1, i=3+1=4}
..
end.
Gồm 3 phần: <b>1.Phần tên</b>
<b> </b> <b>2.Phần khai báo</b>
program <sub>tờn chơng trình; (tên đợc đặt theo quy định của pascal)</sub>
<b>*Phần khai bỏo:</b>
USES <sub>khai báo các Unit(chơng trình chuẩn) cần sử dụng.</sub>
VD :<i>USES</i> <i> crt</i> ;{khai báo sử dụng chơng trình màn hình}
<i>Graph ;{ khai bỏo s dng chng trỡnh họa}</i>
Type <sub>{định nghĩa kiểu dữ liệu mới}</sub>
Const <sub>{khai báo hằng}</sub>
Var <sub>{khai báo biến}</sub>
<b>*Phần tên ch ơng trình:</b>
<b>Begin</b>
Bài 5: Nhập xuất và tính toán cơ bản.
<b>1/ Xuất dữ liệu.</b>
- Để xuất dữ liệu ra màn hình, ta sử dụng lệnh write hoặc writeln. Dữ liệu
là các kiểu tùy ý.
<i><b>a) Lệnh write</b></i>
Cú pháp
<i><b>write(biến hoặc danh sách biến);</b></i>
Xut d liu ra màn hình, con trỏ đợc đặt ở vị trí tiếp theo.
Nếu là danh sách biến thì các biến đợc phõn cỏch vi nhau bi du phy.
VD: write(a,b);
(<i>đa giá trị của biến a,b ra màn hình và con trỏ nằm ngay saugiá trị của</i>
<i>biến b</i>).
*Chỳ ý: Nu mun a ngun một dịng thơng báo nào đó, khi chạy chơng
trình ta đặt chúng giữa hai dấu nháy đơn ‘ ..’
VD: write(‘chuong trinh tinh dien tich hinh chu nhat’);
KÕt qu¶: chuong trinh tinh dien tich hinh chu nhat_ (<i>dÊu con trỏ đậu</i>)
<i><b>b) Lệnh writeln</b></i>
Cú pháp
<i><b>writeln( biến hoặc danh sách biến);</b></i>
Tng tự nh lệnh write nhng khi xuất hết dữ liệu con trỏ tự động xuống
dòng dới.
VD: writeln(‘chuong trinh tinh dien tich hinh chu nhat’);
KÕt qu¶: chuong trinh tinh dien tich hinh chu nhat
_ (<i>dÊu con trá ®Ëu</i>)
Clrscr: lệnh xóa màn hình(có lạc rang sẽ có rợu) chỉ sử dụng đợc khi đã
khai báo sử dụng chơng trình màn hỡnh CRT.
<b>2/ Nhập dữ liệu</b>
- Để gán dữ liệu cho các biến trong chơng trình từ bàn phím sử dụng lệnh
<b>read hoặc readln.</b>
Cú pháp : read(biến hoặc danh sách biến);
<i><b> readln(biến hoặc danh sách biÕn);</b></i>
Lệnh read dùng để nhập dữ liệu cho các biến từ bàn phím, giá tri của
chúng đợc cách nhau bởi dấu cách. Còn lệnh readln kết thúc nhập một biến phải
nhấn phím enter.
VD:
program HCN;
uses crt;
clrscr;
write(‘nhap vao chieu dai HCN a = ’); readln(a);
write(‘nhap vao chieu rong HCN b = ’); readln(b);
writeln(‘dien tich HCN la: ’, a*b);
end.
vÝ dơ nhËp a = 6 vµ b = 3
Kq: nhap vao chieu dai HCN a = 6 (enter)
nhap vao chieu rong HCN b = 3 (enter)
dien tich HCN là: 18
Bài tập
<b>Bài 1: Viết chơng trình tính chu vi, diện tích hình tam giác.</b>
program tamgiac;
uses crt;
var a,b,c:integer;
begin
clrscr;
write(‘nhap vao chieu dai canh thu nhat a = ’); readln(a);
write(‘nhap vao chieu dai canh thu hai b = ’); readln(b);
write(‘nhap vao chieu dai canh thu ba c = ’); readln(c);
writeln(‘chu vi hinh tam giac la: ‘, a+b+c);
writeln(‘dien tich hinh tam giac la: , SQRT(p*(a-b)*(b-c)));
readln; {dừng ở màn hình kết quả chờ nhấn phím enter = Alt + F5}
end.
<b>Bài 2:Viết chơng trình tính diện tích, chu vi hình tròn.</b>
Program hinhtron;
uses crt;
const pi=3,14;
var r:real;
begin
write(‘nhap vao ban kinh hinh tron r = ’);
readln(r);
writeln(‘chu vi hinh tron la: ‘, 2*pi*r:6:2); {<i>kết quả biểu thức đợc viết</i>
<i>trong 6 vị trí trong đó có 2 vị trí dành cho phần thập phân</i>}
writeln(‘dien tich hinh tron la: ‘, pi*sqr(r):6:2);
readln;
end.
Program songuyenduong;
uses crt;
var a,b,c:integer;
begin
clrscr;
write(‘nhap vao so nguyen duong thu nhat a=’); readln(a);
write(‘nhap vao so nguyen duong thu hai b=’); readln(b);
write(‘nhap vao so nguyen duong thu ba c=’); readln(c);
writeln(‘trung binh cong cua ba so nguyen la: ‘, (a+b+c)/3));
readln;
end.
<b>Bài 4. Viết chơng trình nhập 2 số nguyên x,y tính tổng, hiệu, tích, thơng của</b>
Program pl;
uses crt;
var x,y: integer;
begin
clrscr;
write(‘nhap vao so x = ’); readln(x);
write(‘nhap vao so y = ’); readln(y);
write(‘hieu hai so nguyen la: ’, x-y);
write(‘tong hai so nguyen la: ’, x+y);
write(‘tich hai so nguyen la: ’, x*y);
write(‘thuog hai so nguyen la: ’, x/y);
readln ;
end.
<b>Bµi 5. Viết chơng trình giải phơng trình bậc nhất : a*x+b=0.</b>
Program phuongtrinh;
uses crt;
var a,b: integer;
begin
clrscr;
write(‘nhap vao so a = ’); readln(a);
write(‘nhap vao so b = ’); readln(b);
writeln(‘x = ‘,-b/a);
readln;
end.
- CÊu tróc 1: if (điều kiện) then (công việc).
- Cụng dng : Kim tra điều kiện nếu điều kiện trả giá trị đúng thì thực
hiện cơng việc, điều kiện sai khơng làm gì.
- Trong đó :
+ If ...then lµ tõ khãa
+ Điều kiện là biểu thức logic chỉ nhận 1 trong 2 giá trị đúng hoặc sai.
+ công việc là các lệnh của Pascal nếu từ 2 lệnh trở lên phải đặt trong khối
begin .. end;
VD1: if 2>3 then
begin
write(‘nhap vao gia tri a=’); readln(a);
end;
Điều kiện sai nên hai câu lệnh trên không đợc thực hiện .
VD2: a:=5
b:=3
a:=a-b;
b:=b+a;
end;
tÝnh a:=a-b = 5-3=2;
b:=b+a = 3+2=5;
- CÊu tróc2: if <®iỊu kiƯn> then < cv1>
else <cv2>;
- Công dụng : kiểm tra (điều kiện) nếu (điều kiện) đúng thì thực hiện
(cv1) ngợc lại (điều kiện) sai thực hiện (cv2)
Bµi tËp
<b>Bµi 1. Viết chơng trình nhập vào số nguyên dơng x in kết quả cho biết số</b>
<b>nguyên dơng có chia hết cho 3 hay 7 kh«ng?</b>
Program chia_het;
uses crt;
var x: byte;
begin
clrscr;
write(‘nhap vao gia tri x=’); readln(x);
else write(‘khong chia het cho 3 hoac 7’);
readln;
<b>Bài2. Viết chơng trình nhập chiều dài, chiều rộng hcn và bán kính hình</b>
<b>tròn. So sánh diện tích của hcn và hình tròn.</b>
Program bankinh;
uses crt;
var a,b,r,s1,s2: real;
begin
clrscr;
write(‘nhap vao chieu dai hcn a =’); readln(a);
write(‘nhap vao chieu rong hcn b =’); readln(b);
write(‘nhap vao ban kinh hinh tron r =’); readln(r);
writeln(‘s1 hcn la: ‘, a*b:8:2);
writeln(‘s2 hinh tron la: ‘, pi*sqr(r):8:2);
if a*b= pi*sqr(r) then writeln(‘dien tich hcn bang dien tich hinh tron’)
else if a*b>pi*sqr(r) then writeln(‘dien tich hcn lon hon dien tich hinh
tron’)
else writeln(‘dien tich hcn nho hon dien tich hinh tron’);
readln;
end.
<b>Bµi 3. Viết chơng trình vào 1 số nguyên dơng xuất kết quả cho biết số có</b>
<b>chia hết cho 2và3 không?</b>
Program chia_het;
uses crt;
var a: byte;
begin
clrscr;
write(‘nhap vao gia tri a=’); readln(a);
if (a mod 2=0) and (a mod 3=0) then
write(‘chia het cho 3 va 2’)
else writeln(‘khong chia het cho 2 va 3’);
readln;
end.
<b>Bài 4. Viết chơng trình nhập vào 1 năm dơng lịch kiểm tra xem năm đó cú</b>
<b>phi l nm nhun khụng ?</b>
<i>Gợi ý </i>: năm nhuận là năm có 2 số cuối của năm chia hết cho 4. Nếu 2 số
cuối là 00 thì lấy 2 số đầu chia hết cho 4.
Program duonglich;
var nam:word;
begin
write(‘nhap vao so nam=’); readln(nam);
if (nam mod 100<>0) and ( nam mod 4=0) or (nam mod 100 = 0) and
((nam div 100) mod 4 = 0) then
write(‘Nam da cho la nam nhuan’)
else write(‘khong phai la nam nhuan’);
writeln;
end.
<b>5. Viết chơng trình nhập vào 3 độ dài (a,b,c) kiểm tra xem chúng có phải là</b>
<b>3 cạnh của tam giác hay không? Nếu có, in diện tích tam giác đó. Nếu</b>
<b>khơng in thơng báo khơng phải là tam giác?</b>
program tamgiac;
uses crt;
var a,b,c,s,p:real;
begin
clrscr;
write(‘nhap vao so a=’); readln(a);
write(‘nhap vao so b=’); readln(b);
write(‘do la do dai 3 canh cua tam giac ‘);
p:=a+b+c;
writeln(‘p hinh tam giac la:’, a+b+c:8:2);
writeln(‘s hinh tam giac la:’, sqrt(p*(p-a)*(p-b)*(p-c)):8:2);
end
else write(‘khong phai la 3 canh cua tam giac);
readln;
end.
<b>6. Viết chơng trình nhập vào điểm trung bình. In kết quả xếp loại nh sau:</b>
10 >= điểm TB >=9 : xuất sắc
9 > điểm TB >= 8 : giái
8 > ®iĨm TB >=7 :khá
7 > điểm TB >=5: TB
5 > điểm TB >=0: yÕu.
Program TB;
uses crt;
var a:real;
begin
write(‘ nhap vao ®iem TB a=’); readln(a);
if (a<0) or (a>10) then
write(‘a khong hop le’)
else
begin
write(‘xep loai:’);
if a>=9 then writeln(‘xuat sac’)
else
if a>=8 then writeln(‘gioi’)
else
if a>=7 then writeln(‘kha’)
else
if a>=5 then writeln(‘trung binh’)
else
writeln(‘yeu’);
end;
readln;
end.
<b>7. Viết chơng trình nhập vào số giây đổi ra giờ và phút tơng ứng.</b>
program giophut;
uses crt;
var n,gio,phut,giay: integer;
begin
clrscr;
write(‘nhap vao so giay n=’); readln(n);
gio:= n div 3600;
phut:= (n mod 3600) div 60;
giay:= n - gio*3600 - phut*60;
writeln(gio,’ gio ‘,phut,’ phut ‘, giay, giay );
readln ;
end.
<b>Bài 8. Giải phơng trình bậc 2:ax2<sub>+bx+c=0.</sub></b>
Program phuongtrinh;
uses crt;
var a,b,c,delta: real;
begin
clrscr;
write(‘nhap vao he so c=’); readln(c);
if delta < 0 then write(‘phuong trinh vo nghiem’);
if delta = 0 then write(‘phuong trinh co nghiem kep x1= x2= ‘,-b/2a);
if delta > 0 then write(‘pt co nghiem x1=’,(-b-sqrt(delta)/2*a,’ x2=’, (-b+
sqrt(delta)/2*a);
readln;
end.
<b>- CÊu tróc 1: </b> <b>case <biĨu thøc chọn> of</b>
miền giá trị 1:cv1;
miền giá trị 2:cv2;
miền giá trị 3:cv3;
....
miền giá trị n:cvn;
<b>end;</b>
<b>- Cấu trúc 2: </b> <b>case <biểu thức chọn> of</b>
miền giá trị 1:cv1;
miền giá trị 2:cv2;
...
miền giá trị (n-1): cvn-1
<b>else cvn;</b>
<b>end;</b>
Kiểm tra giá trị của biểu thức chọn. Nếu giá trị trùng với miền giá trị nào
đợc liệt kê phía dới thì <cv> tơng ứng với miền giá trị đợc thực hiện.
<b>Trong đó: </b>
- <Biểu thức chọn> là biến có kiểu dữ liệu liệt kê,đếm đợc.
- <Miền giá trị> là các giá trị mà biến chọn có thể nhn.
- <Công việc> là các lệnh của Pascal. Nếu từ 2 lƯnh trë lªn ta sư dơng
begin...end;
VD: Nhập vào 1 số bất kì từ 0 đến 5 và đọc số đó ra màn hình .
Program manhinh;
var so: byte;
begin
write(‘nhap so tu 0- 5:’); readln(so);
case so of
3: write(‘ba’);
4: write(‘bon’);
5: write(‘nam’);
end;
readln;
end.
Bµi TËp.
<b>Bài 1. Nhập vào 1 tháng bất kì trong năm, đa kết quả ra màn hình số ngày</b>
<b>của tháng đó</b>
Program day;
uses crt;
var thang: byte;
begin
clrscr;
write(‘nhap thang tu 1 den 12:’); readln(thang);
case thang of
1,3,5,7,8,10,12: write(‘thang co 31 ngay’);
4,6,9,11: write(‘thang co 30 ngay’);
2 : write(‘thang co 28 ngay’);
end;
readln;
end.
<b>Bài 2. Nhập vào tháng và năm bất kì, đa kết quả là số ngày có trong tháng</b>
<b>đó. Năm nhuận T2 có 29 ngày</b>
Program nhuan;
uses crt;
var thang, nam, nam nhuan: byte;
begin
clrscr;
write(‘nhap so thang tu 1 den 12:’);
readln(thang);
write(‘nhap vao so nam’); readln(nam);
case thang of
1,3,5,7,8,10,12: write(‘thang co 31 ngay’);
4,6,11: write(‘ thang co 30 ngay’);
2: if nam mod 4=0 then write(‘co 29 ngay’)
else write(‘co 28 ngay’);
<b>Bài 4. Nhập vào 3 số tìm max, min.</b>
Program maxmin ;
uses crt ;
var a,b,c,min,max : integer ;
begin
clrscr;
write(‘nhap vao so a=’); readln(a);
write(‘nhap vao so b=’); readln(b);
min:=a;
if max<b then
if b<c then max:= c
else max:=b;
if min>b then
if b>c then max:=c
else min:=b;
writeln(‘so lon nhat :, max,so nho nhat:, min);
readln;
end.
<b>1. Vũng lp cú s bc lp xác định.</b>
+Cú pháp 1 :
for <i> <biến đếm> : = < giá trị đầu > </i><b> to</b><i> < giá trị cuối> </i><b> do</b><i> < cơng</i>
<i>việc></i>
Gán gtrị đầu cho biến đếm, sau đó thực hiện công việc và thực hiện xong
tự động tăng biến đếm lên 1. Nếu giá trị biến đếm nhỏ hơn <giá trị cuối> thì
cơng việc đợc lặp lại cho đến khi biến đếm bằng <giá trị cuối> thì dừng (thốt
<b>trong đó</b>
<i><b><biến đếm> : có kiểu liệt kê, đếm đợc</b></i>
<i><b><gtrị đầu>, <gtrị cuối> : là hằng, biến hoặc biu thc cú cựng kiu vi</b></i>
bin m
<i><b><công việc> : là c¸c lƯnh cđa pascal.</b></i>
VD : tÝnh tỉng 100 số tự nhiên đầu tiên
tổng := 0 ;
i =2 =>tæng = 1 + 3
i=3 => tæng = 3 + 6
i = 4 => tæng = 6 + 10.
Bµi lµm
program tinhtong;
uses crt;
var i , tong : integer;
begin
clrscr;
tong :=0 ;
for i := 1 to 100 do
tong := tong + i ;
writeln ( ‘tong day so la ‘, tong);
readln;
end.
+ Có ph¸p 2 :
<b>for biến đếm : = (gtrị cuối ) down to ( gtrị đầu ) do ( cv ) </b>
Vd: viết ra màn hình bảng chữ cái ngợc từ Z đến A
program Chu_Cai;
var i:char;
begin
for i:= ‘Z’ down to ‘A’ do
write ( i , )
readln;
end.
<i><b>Chú ý: Trong vòng lặp for </b></i>
<b><Cv> sẽ đợc thực hiện ( gtrị cuối - gtrị đầu + 1 ) : lần</b>
Nếu nh khi chạy chơng trình giá trị của <biến đếm> khơng bằng <giá trị
<i><b>cuối> thì vịng lặp sẽ rơi vào trạng thái vơ hạn khơng thốt đợc. Vì vậy trong câu</b></i>
lệnh sau từ khóa Do khơng đợc tùy tiện thay đổi giá trị của biến đếm.
vÝ dô minh häa
var i :byte ;
begin
clrscr;
for i:=2 to 10 do
kết quả chạy chơng trình
2
5
8
chạy tay
begin
writeln(i);
i:=i+2;
end;
readln;
end.
màn hình và i:=i+2=2+2=4
i=4<10 nờn t ng tng lên 1 là 5 và
công việc đợc thực hiện là viết 5 ra
màn hình và i:=i+2=5+2 =7
i=7<10 nên tự động tăng lên 1 là 8 và
thực hiện tiếp cv là viết 8 ra mn hỡnh
v i:=i+2=8+2=10
i=10 nên thoát vòng lặp
program vi_du2;
uses crt ;
var i :byte ;
begin
clrscr;
for i:=2 to 10 do
begin
writeln(i);
i:=i+3;
end;
readln;
end.
kÕt quả chạy chơng trình
2
6
10... vụ hn khụng thoỏt c
chy tay
i=2 cơng việc đợc thực hiện là viết 2 ra
i=5<10 nên tự động tăng lên 1 là 6 và
công việc đợc thực hiện là viết 6 ra
màn hình và i:=i+3=6+3 =9
i=9<10 nên tự động tăng lên 1 là 10 và
thực hiện tiếp cv là viết 10 ra màn hình
và i:=i+3=10 + 3 =13
i=13<>10 nên công việc lại đợc lp
li...
Bài tập
<b>Bài 1. Lập trình in ra bảng cửu chơng</b>
Program cuuchuong;
uses crt;
var a,i: integer;
begin
clrscr;
Write(‘Nhap vao so a = ‘);
readln(a);
writeln( a,’ x ’,i,’ = ’,a*i);
readln;
end.
<b>Bµi 2. TÝnh tỉng d·y sè</b>
<b>1+ 1/x + 1 / x2<sub> + 1 / x</sub>3 <sub> + .... + 1 / x</sub>n </b>
<b>Víi x vµ n nhËp vµo tõ bµn phÝm ( n < 50 )</b>
program tong;
uses crt;
var i , n ,x : integer ;
tong : real;
begin
clrscr;
write ( ‘nhap vao so n =’) ; readln ( n );
write ( ‘nhap vao so x =’) ; readln ( x );
tong : = 1;
for i : = 1 to n do
begin
x : = x* x;
tong : = tong + 1 / x ;
end;
writeln ( ‘ tong day so la ‘ , tong ) ;
end.
<b>Bài 3. Nhập vào bàn phím một số . Kiểm tra xem số đó có phải là số nguyên</b>
<b>tố hay không ?</b>
program songuyento;
uses crt;
var dem ,i , n : integer;
begin
clrscr;
write ( ‘ nhap vao so n =’ ) ; readln ( n ) ;
dem : = 0;
for i := 2 to n div 2 do
end.
<b> Bài 4. Lập trình tính n ! víi n nhËp vµo tõ bµn phÝm</b>
<b>n! = 1 * 2*3*...*n</b>
program giaithua;
uses crt;
var n , i , gt : longint;
clrscr;
write (‘nhap vao so n =’); readln ( n );
gt : = 1 ;
for i : = 1 to n do
gt: = gt*i;
writeln ( ‘ket qua la : ‘,gt);
readln ;
end.
<b> Bài 5 .Lập trình tính tổng sau :</b>
S = -1 + 1/2! - 1/3! + 1/4! - 1/5! + .... (+-)1/n!
( Víi n nhËp vµo tõ bµn phÝm ).
program tinhtong;
uses crt;
var n , i , dau , gt, S : integer;
a : real;
begin
clrscr;
write (nhap vao so n =’);readln(n);
dau := -1;
gt := 1;
for i:= 2 to n do
begin
gt := gt*i;
S : =S + 1 / gt * dau;
dau : = - dau;
end;
writeln ( ‘ket qua la ’, S: 8:2);
readln;
<b>II. Vịng lặp có số bớc lặp khơng xác định.</b>
<i><b>a) Lệnh While .... do</b></i>
Có ph¸p : while<i> ( ®k )</i><b> do </b><i>( cv)</i>
- Kiểm tra điều kiện , nếu thỏa mãn thì thực hiện cơng việc. Trong đó điều
kiện là biểu thức logic, cơng việc là các lệnh của pascal. Trong đó , phải có lệnh
làm thay đổi gtrị của điều kiện . Nếu không :
+ Nếu điều kiện ln ln đúng : Vịng lặp sẽ rơi vào trạng thái vô hạn.
+ Nếu điều kiện sai ngay từ đầu thì cơng việc sẽ khơng đợc thc hin ln
no.
VD: Tìm ƯCLN của 2 số a , b
thuật toán
ƯCLN(10,6)= ƯCLN(10-6=4,6)= ƯCLN(4,6-4=2)= ƯCLN(2,2)=2
White a< > b do
If a > b then a := a - b ;
else b: = b - a;
writeln ( ‘¦CLN = ‘ , a );
<i><b>b) LƯnh Reapeat ...until</b></i>
Có ph¸p reapeat
<i>cv</i>
<i> </i><b> until <</b><i>®iỊu kiƯn</i><b>></b>
Thực hiện cơng việc, sau đó kiểm tra điều kiện, nếu cha thỏa mãn thì quay
lại thực hiện công việc cho đến khi điều kiện đúng.
+Chú ý Lệnh While : làm việc trong khi điều kiện đúng.
Lệnh Reapeat : làm việc cho đến khi điều kiện đúng, cơng việc
đợc thực hiện ít nhất một lần.
VD: Nhập giá trị cho tháng
reapeat
write ( nhap so thang n = ‘) ; readln ( n);
Bài tập
<b> Bài 1. Tìm BCNN của a , b.</b>
program bcnn;
uses crt;
begin
clrscr;
write ( ‘nhap vao a = ‘ ) ; readln ( a ) ;
write ( ‘nhap vao b =’) ; readln (b);
tich : = a* b
while a < > b do
if a > b then a : = a- b
else b : = b -a ;
writeln ( ‘bcnn = ‘ , tich div a );
readln;
end.
<b>Bµi 2. Nhập vào phân số rồi đa ra kết quả tối gi¶n</b>
program toigian;
uses crt;
var a , b , x ,y: integer;
begin
write ( ‘ nhap tu so a =’) ;readln(a);
write ( ‘ nhap mau so b =’) readln ( b);
x : = a ;
y : = b ;
while a < > b do
if a > b then a : = a - b;
else b : = b -a;
writeln( ‘phan so toi gian : ‘ , x , ‘ / ‘, y,’=’,x div a , ‘ / ‘ , y div a );
readln;
end.
<b>Bài 3. Nhập vào tuổi cha con. Sau bao nhiêu năm thì tuổi cha gấp đôi tuổi</b>
<b>con.</b>
program tuoi;
uses crt;
var a , b ,c : integer;
begin
clrscr;
repeat
a : = a + 1 ; b : = b +1 ;
until a = b*2;
writeln ( ‘ tuoi cha gap doi tuoi con sau ‘ b - c , nam);
readln ;
end.
<b>Bài 4 . Viết chơng trình thực hiện công việc sau :</b>
<b>+ Nhập vào 1 kí tự rồi hiển thị mà acsii của nó lên màn h×nh.</b>
<b>+ NhËp m· acsii råi in kÝ tù t¬ng øng.</b>
program congviec ;
uses crt ;
var so , n : integer ;
a : char;
begin
clrscr;
write( ‘nhap ki tu a = ’); readln (a);
write ( ‘nhap so n = ’); readln( n);
write(‘so thu tu cua a trong bang ma ACSII la : ‘ , ord ( a) ) ;
write(‘Ký tù trong bang ma ACSII la : ‘ , chr ( n) ) ;
readln;
end.
<b>Bµi 5. NhËp vµo kÝ tù thêng , viÕt ra kÝ tù hoa</b>
program kitu;
uses crt;
var a : char;
begin
clrscr;
write( ‘nhap vao ki tu a = ‘); readln( a );
write ( ‘so ki tu hoa cua a trong bang ma ACSII la: ‘, upcase (a) );
readln;
end.
M¶ng mét chiỊu
- Hữu hạn các phần tử có cùng kiểu dữ liệu. Số phần tử mảng đợc xác định
ngay khi nh ngha mng.
<i>- Cách khai báo: tên m¶ng : </i><b>array</b><i>[ 1..n] </i><b>of</b><i> kiĨu ;</i>
<b> Trong đó: tên mảng là tên biến .</b>
<b>array l t khúa</b>
[1..n] chỉ số phần tử có trong mảng
kiểu là kiểu dữ liệu của các phần tử trong m¶ng.
VD: a:array[1..20] of integer;
Mảng a có 20 phần tử có kiểu dữ liệu integer. Một phần tử mảng đợc truy
xuất thông qua tên mảng [biến- chỉ- số].
Trong đó biến-chỉ-số chỉ vị trí của phần tử thứ bao nhiêu trong mảng.
VD: a[5]:phần tử thứ 5 trong mảng.
<i>*Chó ý </i>: Thđ tơc nhËp xt m¶ng.
for i:=1 to n do
begin
write(‘a[‘,i,’]=’);
readln(a[i]);
end;
VD: a[1]=5
a[2]=7
a[3]=...
- Viết mảng ra màn hình
for i:=1 to n do
write(a[i],’ ‘);
Bµi tËp
program dayso;
uses crt;
var a : array [ 1 .. 50 ] of integer;
tong : real;
i , n , max, min : integer;
begin
clrscr;
write ( ‘nhap vao so n =’) ; readln( n);
for i: = 1 to n do
write ( ‘ a [ ‘, i,’] = ‘ ) ; readln ( a [i] );
end;
tong : = 0 ;
for i : = 1 to n do
tong : = tong + a [i] ;
write (‘tong la : ‘ , tong :6:0 ) ; readln;
write ( ‘ cac so chia het cho 3 va 5 la : ‘ );
for i : = 1 to n do
if ( a[i] mod 3 = 0 ) and ( a [i] mod 5=0 ) then write ( a [i] , ‘ ‘ );
max : = a [1] ;
min : = a [1];
for i : = 1 to n do
begin
if a [i] > max then max : = a [i];
if a [i] < min then min : = a [i];
end;
write ( ‘max = ‘, max , ‘ min = ‘, min ) ;
readln;
end.
<b>Bài 2: Tính giá trị của số Fibonachi thø n, víi n nhËp vµo tõ bµn phÝm</b>
sè fibonachi f1=1; f2=1; f3 = f1+f2; fn = fn-1 + fn-2
Program Fibonachi;
var
f1,f2,f3,n,i: word;
Begin
Write(‘Nhap vao so n = ‘); readln(n);
f1:=1;
f2:=1;
for i:= 3 to n do
begin
f3:=f1+f2;
f1:=f2;
f2:=f3;
end;
writeln(‘gia tri cua so fibonachi thu ‘,n,’ = ‘, f3);
readln;
<b>Bài 3: Nhập vào một dãy số nguyên, sau đó sắp xếp dãy theo thứ tự tăng</b>
<b>dần</b>
Tht to¸n
cho 1 d·y sè bÊt kú
a1, a2, ...., an
lấy phần tử đầu tiên so sánh với các phần tử còn lại trong dãy. Nếu thỏa mãn điều
kiện phần tử nào đó nhỏ hơn phần tử a1 thì đổi chỗ và tiếp tục so sánh cho đến
hết dãy
Vậy sau lần đầu tiên sẽ tìm đợc phần tử nhỏ nhất.
lấy phần tử thứ 2 là a2 để so sánh với các phần tử cịn lại để tìm ra số nhỏ thứ 2
với thuật toán nh trên
lần lợt cho đến hết sẽ đợc dãy sắp xếp theo thứ tự tăng dần
chý ý
để đổi chỗ cho các phần tử trong dãy mà không làm mất giá trị của nó phải có 1
biến trung gian
giả sử đổi chỗ a1 cho a4
tg:= a1;
a1:= a4;
a4:= a1;
Program sapxep;
var
a:array[1..50] of integer;
n,tg,i,j: integer;
Begin
Write(‘Nhap vao so phan tu cua day n = ‘); readln(n);
{nhap gia trÞ cho day}
for i:= 1 to n do
begin
write(‘a[‘,i,’]=’); readln(a[i]);
end;
{sap xep}
for i:= 1 to n-1 do
for j:= i +1 to n do
if a[i] > a[j] then
begin {doi cho}
tg:= a[i];
writeln(‘Day sau khi sap xep la’);
for i:=1 to n do write(a[i], );
readln;
end.
<b>bài 4: sắp xếp dÃy theo th tự giảm dần</b>
Chui (string) l mt dóy ký tự có chiều dài thay đổi (tối da 256) đợc định nghĩa
bởi từ khóa String, tiếp đến là số ký tự cức đại có thể có của chuỗi và c t
trong ngoc vuụng.
<i><b> Khai báo chuỗi:</b></i>
<b>Var</b> <tờn bin>: string[độ dài cực đại];
ví dụ:
var st:string[30]; {khai b¸o biÕn chuỗi st chứa 30 ký tự là nhiều nhất}
<b>Chú ý:</b>
Cu trúc của chuỗi nh một mảng ký tự có số phần tử bằng độ dài cực đại của
vÝ dơ
var st:string[20];
g¸n
st:=’lap trinh pascal’;
Cấu trúc của biến st trong bộ nhớ nh mảng một chiều gồm 20+1 =21 phần tử
kiểu char, có chỉ số chạy từ 0 đến 20 nh sau
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
16 l a p t r i n h p a s c a l * * * *
st[0]=16 là độ dài thực của chuỗi st
st[1]=’l’
st[7]=’i’