Tải bản đầy đủ (.doc) (25 trang)

Giao trinh va bai tap Pascal

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.


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

12A S (vì bắt đầu là chữ số)


lop hoc S (vì trong tên có ký tự trắng)


Danh_sach Đ


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>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

+ 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 đó


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<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.


<b>Bài 4: cấu trúc chơng trình pascal</b>



Gồm 3 phần: <b>1.Phần tên</b>
<b> </b> <b>2.Phần khai báo</b>


<b> </b> <b>3.Thân chơng trình</b>
<b>*Phần tên:</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>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

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;


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

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


clrscr;


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.


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

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>


chúng và xuất ra màn hình.


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.


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

- 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


if a>= b then
begin


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);


if (x mod 3=0) or (x mod 7=0)
then write(‘chia het cho 3 hoac 7’)


else write(‘khong chia het cho 3 hoac 7’);
readln;


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<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;


uses crt;


var nam:word;
begin


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

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(‘nhap vao so c=’); readln(c);
if (a<b+c) and (b<a+c) and(c<b+a) then
begin


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



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

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;


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

write(‘nhap vao he so c=’); readln(c);


delta:=b*b- 4*a*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>2/ C©u lƯnh case...of.</b>



<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


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

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’);


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<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);


write(‘nhap vao so c=’); readln(c);
max:= a;


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>Bài 7 : Câu lệnh vòng lặp</b>



<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


vịng lặp).


<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 ;


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

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


program vi_du1;
uses crt ;


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


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

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


màn hình và i:=i+3=2+3=5


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);


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

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 ) ;


readln;


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


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

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;


begin


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);


S:=1;


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;


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<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);


until ( n >= 1) and ( n < = 12);


Bài tập
<b> Bài 1. Tìm BCNN của a , b.</b>


program bcnn;
uses crt;


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

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;



</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

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.


<b>Bµi 8 : D÷ liƯu cã cÊu tróc.</b>



</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

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


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

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] , ‘ ‘ );


readln;


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;


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<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];


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

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>


<b>Dữ liệu kiểu chuỗi</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


chuỗi cộng 1. Chỉ số các phần chuỗi chạy từ 0 đến độ dài cực đại của chuỗi.
Trong đó phần tử đầu tiên của chuỗi là 0, chứa tổng số ký tự của chuỗi


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’


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×