Giao trinh va bai tap Pascal

25 10 0
Giao trinh va bai tap Pascal

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trong ®ã ®iÒu kiÖn lµ biÓu thøc logic, c«ng viÖc lµ c¸c lÖnh cña pascal... NhËp vµo tuæi cha con..[r]

(1)

Bài 1: Ngôn ngữ lập trình pascal I/ Giíi thiƯu

- 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 Pascal để đặt tên cho ngơn ngữ lập trình

- Đặc điểm: Nó ngơn ngữ lập trình có cấu trúc, dễ đọc, dễ hiểu II/ Khởi ng v kt thỳc.

1) Chạy môi trờng window.

- Khởi động nh chơng trình ứng dụng bình thờng 2) Chạy mơi trờng Dos.

C:>- gõ đờng dẫn\Turbo exe

* Chú ý : Muốn biết đờng dẫn đến tệp tin cần tìm ta sử dụng : C :>- Dir turbo.exe /b/s

VD: C: >-TP\bin\turbo.exe 3) Thoát khỏi chơng trình. C1 : Vào file \ exit

C2: Nhấn tổ hợp phím Alt+X III/ Soạn thảo chơng trình.

1) Mở mới: file\new

2) Mở tập tin ghi vào đĩa: file\open bấm F3 3) Ghi tập tin vào đĩa: file\save F2 4) Dịch chơng trình: bấm Alt+F9 5)Chạy chơng trình: Ctrl+F9

*Chú ý: Pascal chơng trình biên dịch nghĩa dịch hết chơng trình sang ngơn ngữ máy khơng có lỗi chơng trình đợc thực Chính chơng trình Pascal thờng có lỗi sảy ra:

- Lỗi cú pháp: chơng trình khơng đợc thực có thơng báo lỗi - Lỗi thuật tốn: chơng trình chạy nhng kết sai

IV/ Bé kÝ tù, tõ khãa, tªn gäi.

1) Bộ kí tự : kí tự đợc sử dụng Pascal Đó kí tự chuẩn Mĩ ASCII gồm có 256 kí tự đợc mã hóa theo số tơng ứng

2) Từ khóa: từ Pascal định nghĩa sẵn, em không đợc đặt chùng. VD: program, var, uses, label, array,type,

C©u lƯnh: write; read; if then; case of; while do; repeat until; for to do,

3) Tên gọi:dùng để tên biến sử dụng chơng trình đợc đặt chữ khơng phân biệt chữ thờng hay chữ hoa khơng có kí tự trắng

(2)

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

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

Bài 2:Dữ liệu đơn giản chuẩn

1 Dữ liệu kiểu kí tự (char) :là kí tự có bàn phím. Các hàm kí tự :

ORD(kÝ tù ): tr¶ vỊ sè thø tù cđa kÝ tù b¶ng ACSII Chr (n) : tr¶ vỊ ‘kÝ tù’ cđa thø tù n b¶ng ACSII Upcase (kÝ tù) : kÝ tù hoa t¬ng øng

VÝ dô : Ord (‘a’) = 97 Chr (97) = a

Upcase (‘a’) = A 2 Dữ liệu kiểu số nguyên .

tên Phạm vi biĨu diƠn

byte 255

shortint -128 127

word 65535

integer -32768 32767

longint -2174483648 2174483647

C¸c phÐp to¸n

* :nh©n +: céng / :chia -: trõ

MOD : phÐp chia lÊy phÇn d vd : 10 mod = (10 chia d 1) DIV : phép chia lấy phần nguyên vd : 10 div =

Mét sè hµm

ABS( n ) = trị tuyệt đối n SQR( x ) = x2

SQRT( x ) = bậc x Inc(n) = n +

Random( n ) = sè nguyªn ngÉu nhiªn tõ n 3.D÷ liƯu kiĨu sè thùc (Real).

- Ph¹m vi biĨu diƠn rÊt lín, cã thể biểu diễn số có phần thập phân Có tất phép toán số học trừ phép Mod Div

4 Dữ liệu kiểu logic ( Boolean )

(3)

+ AND : cho kết T tất toán hạng T Cú pháp: (biểu thức đk 1) AND (biểu thức đk 2) AND ( ) VD : ( > ) and ( = 1+2 ) = F

( < ) and ( = +2 ) = T

+ OR : Cho kết T tồn điều kiện T Cú pháp : (biểu thức ®k 1) OR (biÓu thøc ®k 2) OR ( ) VD : (3 > 7) or ( = + ) = T

bµi 3: h»ng, biến, kiểu, biểu thức câu lệnh

I,Khai báo h»ng

Hằng đại lợng có giá trị khơng đổi suốt chơng trình Cách khai báo

Const tên = giá trị hằng;

VD: Const m=10; pi=3,14;

chó ý: Sau từ khóa Const liệt kê hết có chơng trình II,Biến

L i lng cú thể thay đổi giá trị Biến chơng trình tên vùng nhớ lu trữ liệu

C¸ch khai báo biến:

Var tên biến :kiểu biến

VD : Var a: integer ; (biến a có kiểu liệu integer nghĩa chỉ có khả nhận giá trị từ -32768 đến 32767 chơng trình gán giá trị lớn nhỏ biến bị tràn cho kết khơng xác)

x : real; III,Khai b¸o kiểu liệu

Là kiểu liệu lập trình viên tự dịch nghĩa

Type tên liệu =(các thành phần kiểu liệu mới);

VD:

Type traicay =(cam, tao, xoai, dua); (d÷ liệu có tên traicay và nhận loại trái có danh sách dà liệt kê)

mau =(xanh,do ,tim,vang); (dữ liệu có tên mau) Var

a: traicay; (biến a có kiểu liệu trái vừa đợc định nghĩa trên) m: mau;

IV,BiĨu thøc

Là cơng thức tính tốn để có giá trị theo quy tắc Biểu thức gồm toán tử toán hạng xếp xen kẽ nhau.Trong

(4)

-Tốn tử: phép toán tác động lên toán hạng ( ): u tiên

*, /, div, mod, and: u tiªn

+, -, or: u tiªn

=, <>, >, <, >=, =<: u tiên V,Câu lệnh

Xỏc định cơng việc mà chơng trình phải thực Các câu lệnh đợc phân cách dấu ; (dấu chấm phẩy)

VI,PhÐp g¸n

Dùng để gán giá trị biểu thức, cho biến tên biến: =giá trị biểu thức

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ị = +1, i=3+1=4}

end

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

Gồm phần: 1.Phần tên 2.Phần khai báo 3.Thân chơng trình *Phần tªn:

program tên chơng trình; (tên đợc đặt theo quy định pascal) *Phần khai báo:

USES khai báo Unit(chơng trình chuẩn) cần sử dụng. VD :USES crt ;{khai báo sử dụng chơng trình hình}

Graph ;{ khai báo sử dụng chơng trình đồ họa}

Type {định nghĩa kiểu liệu mới} Const {khai bỏo hng}

Var {khai báo biến} *Phần tên ch ơng trình: Begin

(5)

Bài 5: Nhập xuất tính toán 1/ Xuất liệu.

- Để xuất liệu hình, ta sử dụng lệnh write writeln Dữ liệu c¸c kiĨu tïy ý

a) LƯnh write Có ph¸p

write(biến danh sách biến);

Xut d liu hình, trỏ đợc đặt vị trí

Nếu danh sách biến biến đợc phân cách với dấu phẩy VD: write(a,b);

(đa giá trị biến a,b hình trỏ nằm saugiá trị của biến b)

*Chú ý: Nếu muốn đa nguyên dòng thơng báo đó, chạy chơng trình ta đặt chúng 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_ (dÊu trỏ đậu) b) Lệnh writeln

Cú pháp

writeln( biến danh sách biến);

Tng t nh lệnh write nhng xuất hết liệu 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

_ (dÊu trá ®Ëu)

Clrscr: lệnh xóa hình(có lạc rang có rợu) sử dụng đợc khai báo sử dụng chơng trình hình CRT

2/ NhËp liệu

- Để gán liệu cho biến chơng trình từ bàn phím sử dụng lệnh read readln.

Cú pháp : read(biến danh sách biến); readln(biến danh sách biến);

Lệnh read dùng để nhập liệu cho biến từ bàn phím, giá tri chúng đợc cách dấu cách Còn lệnh readln kết thúc nhập biến phải nhấn phím enter

VD:

program HCN; uses crt;

(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 = vµ b =

Kq: nhap vao chieu dai HCN a = (enter) nhap vao chieu rong HCN b = (enter) dien tich HCN lµ: 18

Bµi tËp

Bµi 1: Viết chơng trình tính chu vi, diện tích hình tam gi¸c. 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 hình kết qu¶ chê nhÊn phÝm enter = Alt + F5} end

Bài 2:Viết chơng trình tính diện tích, chu vi hình tròn. 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); {kết biểu thức đợc viết trong vị trí có vị trí dành cho phần thập phân}

writeln(‘dien tich hinh tron la: ‘, pi*sqr(r):6:2); readln;

end

(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ài Viết chơng trình nhập số nguyên x,y tính tổng, hiệu, tích, thơng của chúng xuất 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ài Viết chơng trình giải phơng trình bậc : a*x+b=0. 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

(8)

- CÊu tróc 1: if (®iỊu kiƯn) then (c«ng viƯc)

- Cơng dụng : Kiểm tra điều kiện điều kiện trả giá trị thực cơng việc, điều kiện sai khơng làm

- Trong :

+ If then lµ tõ khãa

+ Điều kiện biểu thức logic nhận giá trị sai + công việc lệnh Pascal từ lệnh trở lên phải đặt 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 không đợc thực 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) (điều kiện) thực (cv1) ngợc lại (điều kiện) sai thực (cv2)

Bài tập

Bài Viết chơng trình nhập vào số nguyên dơng x in kết cho biết số nguyên dơng có chia hết cho hay kh«ng?

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

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

(9)

Bài2 Viết chơng trình nhập chiều dài, chiều rộng hcn bán kính hình tròn So sánh diện tích hcn hình tròn.

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ài Viết chơng trình vào số nguyên dơng xuất kết cho biết số có chia hết cho 2và3 không?

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 va 2’)

else writeln(‘khong chia het cho va 3’); readln;

end

Bài Viết chơng trình nhập vào năm dơng lịch kiểm tra xem năm có phải năm nhuận khơng ?

Gỵi ý : năm nhuận năm có số cuối năm chia hết cho Nếu số cuối 00 lấy số đầu chia hết cho

Program duonglich; uses crt;

var nam:word; begin

(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 = 0) then

write(‘Nam da cho la nam nhuan’) else write(‘khong phai la nam nhuan’); writeln;

end

5 Viết chơng trình nhập vào độ dài (a,b,c) kiểm tra xem chúng có phải là 3 cạnh tam giác hay khơng? Nếu có, in diện tích tam giác Nếu khơng in thơng báo khơng phải tam giác?

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 dai 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 canh cua tam giac’); readln;

end

6 Viết chơng trình nhập vào điểm trung bình In kết xếp loại nh sau: 10 >= điểm TB >=9 : xuất sắc

9 > điểm TB >= : giỏi > điểm TB >=7 :khá > ®iÓm TB >=5: TB > ®iÓm TB >=0: yÕu Program TB;

uses crt; var a:real; begin

(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

7 Viết chơng trình nhập vào số giây đổi phút tơng ứng. 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ài Giải phơng trình bậc 2:ax2+bx+c=0. Program phuongtrinh;

uses crt;

var a,b,c,delta: real; begin

clrscr;

(12)

write(‘nhap vao he so c=’); readln(c); delta:=b*b- 4*a*c;

if delta < then write(‘phuong trinh vo nghiem’);

if delta = then write(‘phuong trinh co nghiem kep x1= x2= ‘,-b/2a); if delta > then write(‘pt co nghiem x1=’,(-b-sqrt(delta)/2*a,’ x2=’, (-b+ sqrt(delta)/2*a);

readln; end

2/ C©u lƯnh case of.

- CÊu tróc 1: case <biĨu thøc chän> of miền giá trị 1:cv1; miền giá trị 2:cv2; miền giá trị 3:cv3;

miền giá trị n:cvn; end;

- CÊu tróc 2: case <biĨu thøc chän> of miền giá trị 1:cv1; miền giá trị 2:cv2;

miền giá trị (n-1): cvn-1 else cvn;

end;

Kiểm tra giá trị biểu thức chọn Nếu giá trị trùng với miền giá trị đợc liệt kê phía dới <cv> tơng ứng với miền giá trị đợc thực

Trong đó:

- <Biểu thức chọn> biến có kiểu liệu liệt kê,đếm đợc - <Miền giá trị> giá trị mà biến chọn nhận

- <Công việc> lệnh Pascal Nếu từ lƯnh trë lªn ta sư dơng begin end;

VD: Nhập vào số từ đến đọc số hình Program manhinh;

var so: byte; begin

write(‘nhap so tu 0- 5:’); readln(so); case so of

(13)

3: write(‘ba’); 4: write(‘bon’); 5: write(‘nam’); end;

readln; end

Bµi TËp

Bài Nhập vào tháng năm, đa kết hình số ngày của tháng đó

Program day; uses crt;

var thang: byte; begin

clrscr;

write(‘nhap thang tu 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ài Nhập vào tháng năm bất kì, đa kết số ngày có tháng đó Năm nhuận T2 có 29 ngày

Program nhuan; uses crt;

var thang, nam, nam nhuan: byte; begin

clrscr;

write(‘nhap so thang tu 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’);

(14)

Bµi Nhập vào số tìm max, min. 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µi : Câu lệnh vòng lặp

1 Vũng lp có số bớc lặp xác định. +Cú pháp :

for <biến đếm> : = < giá trị đầu > to < giá trị cuối> do < công việc>

Gán gtrị đầu cho biến đếm, sau thực cơng việc thực xong tự động tăng biến đếm lên Nếu giá trị biến đếm nhỏ <giá trị cuối> cơng việc đợc lặp lại biến đếm <giá trị cuối> dừng (thốt vịng lặp)

trong đó

<biến đếm> : có kiểu liệt kê, đếm đợc

<gtrị đầu>, <gtrị cuối> : hằng, biến biểu thức có kiểu với biến đếm

<công việc> : lệnh pascal. VD : tính tổng 100 số tự nhiên tổng := ;

(15)

i =2 =>tæng = + i=3 => tæng = + i = => tæng = + 10

Bµi lµm

program tinhtong; uses crt;

var i , tong : integer; begin

clrscr; tong :=0 ;

for i := to 100 tong := tong + i ;

writeln ( ‘tong day so la ‘, tong); readln;

end + Có ph¸p :

for biến đếm : = (gtrị cuối ) down to ( gtrị đầu ) ( cv ) Vd: viết hình bảng chữ ngợc từ Z đến A

program Chu_Cai; var i:char;

begin

for i:= ‘Z’ down to ‘A’ write ( i , ‘ ’ )

readln; end

Chú ý: Trong vòng lặp for

<Cv> đợc thực ( gtrị cuối - gtrị đầu + ) : lần

Nếu nh chạy chơng trình giá trị <biến đếm> khơng <giá trị cuối> vịng lặp rơi vào trạng thái vơ hạn khơng đợc Vì câu lệnh sau từ khóa Do khơng đợc tùy tiện thay đổi giá trị biến đếm

vÝ dô minh häa program vi_du1; uses crt ;

var i :byte ; begin clrscr;

for i:=2 to 10

kết chạy chơng trình

5

ch¹y tay

(16)

begin writeln(i); i:=i+2; end; readln; end

màn hình i:=i+2=2+2=4

i=4<10 nên tự động tăng lên công việc đợc thực viết hình i:=i+2=5+2 =7

i=7<10 nên tự động tăng lên thực tiếp cv viết 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 begin writeln(i); i:=i+3; end; readln; end

kÕt qu¶ chạy chơng trình

6

10 vụ hạn khơng đợc chạy tay

i=2 cơng việc đợc thực viết hình i:=i+3=2+3=5

i=5<10 nên tự động tăng lên công việc đợc thực viết hình i:=i+3=6+3 =9

i=9<10 nên tự động tăng lên 10 thực tiếp cv viết 10 hình i:=i+3=10 + =13

i=13<>10 nên công việc lại đợc lặp li

Bài tập Bài Lập trình in bảng cửu chơng

Program cuuchuong; uses crt;

var a,i: integer; begin

clrscr;

Write(‘Nhap vao so a = ‘); readln(a);

(17)

writeln( a,’ x ’,i,’ = ’,a*i); readln;

end

Bµi TÝnh tæng d·y sè

1+ 1/x + / x2 + / x3 + + / xn

Víi x vµ n nhËp vµo tõ bµn phÝm ( n < 50 ) 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 : = to n begin

x : = x* x;

tong : = tong + / x ; end;

writeln ( ‘ tong day so la ‘ , tong ) ; readln;

end

Bài Nhập vào bàn phím số Kiểm tra xem số có phải số nguyên tố hay không ?

program songuyento; uses crt;

var dem ,i , n : integer; begin

clrscr;

write ( ‘ nhap vao so n =’ ) ; readln ( n ) ; dem : = 0;

for i := to n div

(18)

end

Bài Lập trình tính n ! với n nhËp vµo tõ bµn phÝm n! = * 2*3* *n

program giaithua; uses crt;

var n , i , gt : longint; begin

clrscr;

write (‘nhap vao so n =’); readln ( n ); gt : = ;

for i : = to n gt: = gt*i;

writeln ( ‘ket qua la : ‘,gt); readln ;

end

Bài Lập trình tính tổng sau :

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:= to n begin

gt := gt*i;

S : =S + / gt * dau; dau : = - dau;

end;

writeln ( ‘ket qua la ’, S: 8:2); readln;

(19)

II Vịng lặp có số bớc lặp không xác định. a) Lệnh While do

Cú pháp : while ( đk ) ( cv)

- Kiểm tra điều kiện , thỏa mãn thực cơng việc Trong điều kiện biểu thức logic, công việc lệnh pascal Trong , phải có lệnh làm thay đổi gtrị điều kiện Nếu không :

+ Nếu điều kiện ln ln : Vịng lặp rơi vào trạng thái vô hạn + Nếu điều kiện sai từ đầu cơng việc khơng c thc hin ln no

VD: Tìm ƯCLN 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

If a > b then a := a - b ; else b: = b - a;

writeln ( ‘¦CLN = ‘ , a ); b) LƯnh Reapeat .until Có ph¸p reapeat

cv

until <®iỊu kiƯn>

Thực cơng việc, sau kiểm tra điều kiện, cha thỏa mãn quay lại thực công việc điều kiện

+Chú ý Lệnh While : làm việc điều kiện

Lệnh Reapeat : làm việc điều kiện đúng, công việc đợc thực hin ớt nht mt ln

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ài Tìm BCNN a , b.

program bcnn; uses crt;

(20)

begin clrscr;

write ( ‘nhap vao a = ‘ ) ; readln ( a ) ; write ( ‘nhap vao b =’) ; readln (b); tich : = a* b

while a < > b

if a > b then a : = a- b else b : = b -a ;

writeln ( ‘bcnn = ‘ , tich div a ); readln;

end

Bài Nhập vào phân số đa kÕt qu¶ tèi gi¶n 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

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ài Nhập vào tuổi cha Sau năm tuổi cha gấp đơi tuổi con.

program tuoi; uses crt;

var a , b ,c : integer; begin

clrscr;

(21)

repeat

a : = a + ; b : = b +1 ; until a = b*2;

writeln ( ‘ tuoi cha gap doi tuoi sau ‘ b - c , ‘ nam’); readln ;

end

Bài Viết chơng trình thực công việc sau :

+ Nhập vào kí tự hiển thị mà acsii lên hình. + Nhập mà acsii in kí tự tơng øng.

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 bang ma ACSII la : ‘ , ord ( a) ) ; write(‘Ký tù bang ma ACSII la : ‘ , chr ( n) ) ;

readln; end

Bµi NhËp vµo kÝ tù thêng , viÕt kÝ tù hoa program kitu;

uses crt; var a : char; begin

clrscr;

write( ‘nhap vao ki tu a = ‘); readln( a );

write ( ‘so ki tu hoa cua a bang ma ACSII la: ‘, upcase (a) ); readln;

end

Bài : Dữ liệu có cấu trúc.

(22)

M¶ng mét chiỊu

- Hữu hạn phần tử có kiểu liệu Số phần tử mảng đợc xác định định nghĩa mảng

- Cách khai báo: tên mảng : array[ n] of kiĨu ;

Trong đó: tên mảng tên biến array từ khóa

[1 n] số phần tử có mảng

kiểu kiểu liệu phần tử mảng VD: a:array[1 20] of integer;

Mảng a có 20 phần tử có kiểu 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ố vị trí phần tử thứ mảng VD: a[5]:phần tử thứ mảng

*Chó ý : Thđ tơc nhËp xuÊt m¶ng for i:=1 to n

begin

write(‘a[‘,i,’]=’); readln(a[i]); end;

VD: a[1]=5 a[2]=7 a[3]=

- Viết mảng hình for i:=1 to n

write(a[i],’ ‘);

Bµi tËp program dayso;

uses crt;

var a : array [ 50 ] of integer; tong : real;

i , n , max, : integer; begin

clrscr;

write ( ‘nhap vao so n =’) ; readln( n); for i: = to n

(23)

write ( ‘ a [ ‘, i,’] = ‘ ) ; readln ( a [i] ); end;

tong : = ;

for i : = to n

tong : = tong + a [i] ;

write (‘tong la : ‘ , tong :6:0 ) ; readln; write ( ‘ cac so chia het cho va la : ‘ ); for i : = to n

if ( a[i] mod = ) and ( a [i] mod 5=0 ) then write ( a [i] , ‘ ‘ ); readln;

max : = a [1] ; : = a [1]; for i : = to n begin

if a [i] > max then max : = a [i]; if a [i] < then : = a [i]; end;

write ( ‘max = ‘, max , ‘ = ‘, ) ; readln;

end

Bài 2: Tính giá trị số Fibonachi thứ n, víi n nhËp vµo tõ bµn phÝm 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:= to n begin

f3:=f1+f2; f1:=f2; f2:=f3; end;

writeln(‘gia tri cua so fibonachi thu ‘,n,’ = ‘, f3); readln;

(24)

Bài 3: Nhập vào dãy số nguyên, sau xếp dãy theo thứ tự tăng dần

ThuËt to¸n

cho d·y sè bÊt kú a1, a2, , an

lấy phần tử so sánh với phần tử lại dãy Nếu thỏa mãn điều kiện phần tử nhỏ phần tử a1 đổi chỗ tiếp tục so sánh hết dãy

Vậy sau lần tìm đợc phần tử nhỏ

lấy phần tử thứ a2 để so sánh với phần tử cịn lại để tìm số nhỏ thứ với thuật toán nh

lần lợt hết đợc dãy xếp theo thứ tự tăng dần chý ý

để đổi chỗ cho phần tử dãy mà không làm giá trị phải có 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:= to n begin

write(‘a[‘,i,’]=’); readln(a[i]); end;

{sap xep}

for i:= to n-1

for j:= i +1 to n if a[i] > a[j] then

begin {doi cho} tg:= a[i];

(25)

writeln(‘Day sau sap xep la’); for i:=1 to n write(a[i],’ ); readln;

end

bài 4: xếp dÃy theo th tự giảm dần

Dữ liệu kiểu chuỗi

Chuỗi (string) dãy ký tự có chiều dài thay đổi (tối da 256) đợc định nghĩa từ khóa String, tiếp đến số ký tự cức đại có chuỗi đợc đặt ngoc vuụng

Khai báo chuỗi:

Var <tờn biến>: 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ự nhiỊu nhÊt} Chó ý:

Cấu trúc chuỗi nh mảng ký tự có số phần tử độ dài cực đại chuỗi cộng Chỉ số phần chuỗi chạy từ đến độ dài cực đại chuỗi Trong phần tử chuỗi 0, chứa tổng số ký tự chuỗi

vÝ dơ

var st:string[20]; g¸n

st:=’lap trinh pascal’;

Cấu trúc biến st nhớ nh mảng chiều gồm 20+1 =21 phần tử kiểu char, có số chạy từ đến 20 nh sau

0 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 độ dài thực chuỗi st st[1]=’l’

st[7]=’i’

Ngày đăng: 02/05/2021, 14:27

Tài liệu cùng người dùng

Tài liệu liên quan