I.1 Lý do chọn đề tài.
Như đã biết, trong giai đoạn hiện nay máy tính điện tử đã nhanh
chóng thâm nhập vào mọi lĩnh vực sản xuất, kinh tế và đời
sống xã hội. Tin học đã được ứng dụng rộng rãi trong mọi lĩnh vực từ các
ngành khoa học chính xác, khoa học cơ bản đến điều khiển tự động,
thông tin liên lạc, . Ðặc biệt tin học được sử dụng nhiều trong công tác
quản lý như quản lý sản xuất, quản lý con người, quản lý tài nguyên, .
Tin học được xem là một trong những ngành mũi nhọn, chiếm vị trí hàng
đầu trong chính sách kinh tế và khoa học kỹ thuật của các nước đã và
đang phát triển. Chính vì vậy việc giáo dục tin học ở trường phổ thông có
vai trò quan trọng vì việc giáo dục đó là nhằm chuẩn bị cho thế hệ trẻ
Việt Nam về mặt tri thức, kỷ năng, về mặt năng lực, trí tuệ và các phẩm
chất cần thiết giúp học sinh thích ứng với thời đại vi tính hóa. Giúp cho
học sinh sau khi tốt nghiệp nắm được một số yếu tố cơ bản của tin học.
Trong đó có một số em có khả năng sử dụng máy tính để xử lý thông tin,
dùng máy tính như một công cụ phục vụ cho việc học tập và hoạt động.
Xét về mặt năng lực, trí tuệ: Giúp phát triển nhiều phương thức, tư duy
liên hệ mật thiết với việc sử dụng kỹ thuật xử lý thông tin như: tư duy
thuật toán, tư duy điều khiển, tư duy ngôn ngữ,. Ðồng thời hình thành và
phát triển năng lực hoạt động trí tuệ nói chung như phân tích, tổng hợp,
khái quát hóa, trừu tượng hóa,. Để xử lí thông tin tốt và để nâng cao
năng lực học tập cho học sinh thì việc học ngôn ngữ lập trình pascal là
một nhiệm vụ hết sức quan trọng.
nào? -> Học sinh cần phải biết ngôn ngữ lập trình
Pascal-> tiếp đến giáo viên cần chỉ rõ cho học sinh hiểu phần mềm để soạn
thảo chương trình, đồng thời cho phép dịch và thực hiện chương trình được
gọi là môi trường lập trình, vi dụ rõ cho học sinh, để soạn thảo chương trình
bằng ngôn ngữ lập trình Pascal, ta có thể sử dụng môi trường Turbo Pascal
hoặc Free Pascal
- Có thuật toán rồi để tiếp tục chuyển thành một chương trình Pascal giáo viên
cần cho học sinh biết được sơ bộ về ngôn ngữ lập trình Pascal; Biết được cấu
trúc của một chương trình Pascal; Các thành phần cơ sở của ngôn ngữ lập
trình Pascal; Cho học sinh hiểu được một số kiểu dữ liệu chuẩn, cách khai
báo biến, biểu thức quan và các câu lệnh cơ bản khi lập trình.
- Một số nội dung cần cho học sinh nắm được: Một số kiểu dữ liệu cơ bản của
ngôn ngữ lập trình pascal (Chú ý khi mới học giáo viên chỉ yêu cầu học sinh
khai báo dữ liệu các kiểu integer, real, char, string và không bắt buộc học
sinh phần mở rộng).
Giáo viên có thể mở rộng thêm:
kiểu nguyên:
Kiểu Bộ nhớ lưu
trữ 1 giá trị
Phạm vi giá trị
Byte 1 byte Từ 0 đến 255
Integer 2 byte Từ -215 đến 215-1
Word 2 byte Từ 0 đến 216-1
Longint 4 byte Từ -231 đến 231-1
kiểu thực:
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 9
Kiểu Bộ nhớ lưu
trữ 1 giá trị
Phạm vi giá trị
Real 6 byte 0 hoặc có giá trị tuyệt đối nằm trong phạm
vi từ
2.9 x10-39 đến 1038
Extended 10 byte 0 hoặc có giá trị tuyệt đối nằm trong phạm
vi từ
10-4932 đến 104932
kiểu kí tự:
Kiểu Bộ nhớ lưu
trữ 1 giá trị
Phạm vi giá trị
Char 1 byte 256 kí tự trong bộ mã ASCII
kiểu logic:
Kiểu Bộ nhớ lưu
trữ 1 giá trị
Phạm vi giá trị
Boolean 1 byte True hoặc False
Ngoài ra, bên Free Pascal còn có thêm: INT64 phạm vi từ -263 đến 263-1; Qword
phạm vi từ -264 đến 264-1; phần này dành cho dữ liệu với phậm vi rất lớn.
– Các phép toán quan hệ (còn gọi là phép toán so sánh)
TÊN VIẾT TRONG PASCAL
Nhỏ hơn <
Nhỏ hơn hoặc bằng < =
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 10
Lớn hơn >
Lớn hơn hoặc bằng > =
Bằng =
Khác
Các phép toán quan hệ cho giá trị kiểu logic: True hoặc False; được dung để so sánh
và đưa ra quyết định hướng đi tiếp theo trong lập trình.
– Các phép toán logic:
TÊN VIẾT TRONG PASCAL
Phủ định Not
Hoặc Or
Và And
Các phép toán logic thường dung để kết hợp nhiều biểu thức quan hệ với nhau.
Biểu thức số học:
– Là một dãy các phép toán +, -, *, /, Div, Mod từ các hằng, biến kiểu số và các
hàm.
– Dùng cặp dấu ( ) để quy định trình tự tính toán.
Thứ tự thực hiện phép toán:
– Trong ngoặc trước, ngoài ngoặc sau.
– Nhân chia trước cộng trừ sau.
– Giá trị của biểu thức có kiểu là kiểu của biến hoặc hằng có miền giá trị lớn nhất
trong biểu thức.
Một số câu lệnh cần nắm khi lập trình Pascal:
Lệnh xuất dữ liệu
Write(‘dữ liệu’); In dữ liệu ra màn hình và con trỏ nằm liền kề.
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 11
Writeln(‘dữ liệu’);
Writeln(‘phép toán’);
Writeln(phép toán);
Writeln(biến);
Writeln(biến:m:n);
Writeln;
Phân biệt lệnh write và writeln (lệnh viết ra màn hình).
Write(mục1,mục2,, mục n);
Viết ra các mục, không xuống dòng sau khi viết xong mục cuối cùng
là mục n.
Writeln(mục1,mục2,, mục n);
Viết ra các mục, sau đó đưa con trỏ xuống đầu dòng tiếp theo
Giáo viên cần nhấn mạnh xuất dữ liệu và xuất giá trị của biểu thức, hay giá trị
của biến,
VÍ DỤ 1:
VÍ DỤ 2:
KẾT
QUẢ
Lệnh nhập dữ liệu
Read(biến);
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 12
Read(danh sách biến);
Readln(biến);
Readln(danh sách biến);
Readln;
Phân biệt lệnh read và readln (Đọc dữ liệu nhập vào từ bàn phím).
Read(mục1,mục2,, mục n);
Readln(mục1,mục2,, mục n);
Lệnh read và readln tương tự như lệnh write và lệnh writeln.
Chú ý: Sử dụng biến trong chương trình:
Biến là đại lượng dùng để lưu trữ dữ liệu, dữ liệu này có thể thay đổi trong khi
thực hiện chương trình.
- Dữ liệu do biến lưu trữ được gọi là giá trị của biến.
Khai báo biến trong PASCAL
Var : ;
Trong Pascal, còn cung cấp một lệnh để gán giá trị cho biến khi nhập từ bàn
phím.
Cú pháp : Readln( Tên biến );
Chương trình sẽ dừng lại chờ người sử dụng nhập vào giá trị từ bàn phím.
Ví dụ minh họa làm quen với cách khai báo và sử dụng biến trong chương trình
Viết chương trình nhập vào một số nguyên. In ra màn hình số nguyên vừa
nhập, in ra màn hình giá trị của số nguyên vừa nhập.
Var
a:integer;
Begin
Write(‘Nhap mot so nguyen =’);Readln(a);
Writeln(‘Gia tri cua so nguyen vua nhap = ’,a);
Readln;end.
Minh họa kết quả chạy
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 13
Tùy theo đối tượng học sinh mà giáo viên phân tích thêm phạm vi kiểu dữ liệu
cho học sinh, nếu đối tượng học sinh yếu thì giáo viên mặc định kiểu số nguyên
là khai báo kiểu Integer giống như sách giáo khoa thôi, không nên làm rối cho
học sinh;Còn đối tượng học sinh khá, giỏi giáo viên giải thích thêm
Ví dụ các bộ test chạy ở trên nếu vượt quá phạm vi thì kết quả không chính xác;
Cần khai báo longint, INT64, Qword để khắc phục; và xử lí số nguyên rất lớn
thì ta sẽ xét ở cấp bậc ôn thi các cấp thì giáo viên sẽ nói thêm cho học sinh ở
các tiết học sau.
Các hàm số học sử dụng cho kiểu số nguyên và số thực:
SQR(x): Trả về 2x
SQRT(x): Trả về căn bậc hai của x (x0) x
ABS(x): Trả về |x|
SIN(x): Trả về sin(x) theo radian
COS(x): Trả về cos(x) theo radian
ARCTAN(x): Trả về arctang(x) theo radian
TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé hơn x.
INT(x): Trả về phần nguyên của x
FRAC(x): Trả về phần thập phân của x
ROUND(x): Làm tròn số nguyên x
Câu lệnh gán
Cú pháp: Tên biến := biểu thức cần gán giá trị cho biến;
Các câu lệnh có cấu trúc
If .. then else
- Câu lệnh điều kiện dạng thiếu:
Cú pháp: IF THEN ;
Hoạt động: Nếu điều kiện được thoả mãn thì chương trình thực hiện câu lệnh sau
THEN. Ngược lại câu lệnh sau THEN bị bỏ qua.
- Câu lệnh điều kiện dạng đủ.
Cú pháp: IF THEN
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 14
ELSE ;
Hoạt động: Nếu điều kiện được thoả mãn thì được thực hiện.
Ngược lại thì được thực hiện.
Sơ đồ cấu trúc rẽ nhánh dạng thiếu minh họa cho câu điều kiện dạng thiếu và
câu lệnh điều kiện dạng đủ.
Ví dụ: Viết chương trình nhập vào một số tự nhiên, kiểm tra số vừa nhập là số chẵn
hay là số lẻ.
Chương trình:
Var
a: integer;
Begin
Write(‘Nhap vao mot so tu nhien: ‘);Readln(a);
If (a mod 2 = 0) then writeln(a, ‘la so chan’)
Else write(a, ‘la so le’);
Readln;
End.
For to ...do (Phần này yêu cầu học sinh phải nắm vững cú pháp và
hoạt động của câu lệnh lặp).
Trong đó:
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 15
là một tên biến.
, , phải cùng kiểu dữ liệu và
đó phải là kiểu rời rạc (Kiểu số nguyên: integer, longint; kiểu kí tự:
char, ). Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
Câu lệnh có thể là câu lệnh đơn, câu lệnh ghép, câu lệnh điều kiện
if then hoặc câu lệnh lặp,
hoạt động của câu lệnh: (for to do dạng tiến)
Đầu tiên được gán cho , câu lệnh sau Do sẽ
được thực hiện, sau mỗi vòng lặp biến đếm tự động tăng thêm 1 đơn vị. Đến
khi = ) thì câu lệnh sau Do được thực hiện lần
cuối cùng và câu lệnh For to do chấm dứt.
Ví dụ: minh họa vòng lặp for to do
Chú ý
Biến ở
đây
chính
là biến
đếm
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 16
Tuỳ theo đối tượng học sinh trên lớp mà giáo viên giới thiệu thêm câu lệnh lặp với
số lần biết trước dạng lùi.
For := Downto do <Câu lệnh
While do . (repeat until)
Câu lệnh lặp với số lần chưa biết trước (while ... do...).
Cú pháp: While do ;
Bước 1. Máy tính xác định giá trị của điều kiện.
Bước 2. Tuỳ thuộc vào giá trị của điều kiện:
- Nếu điều kiện có giá trị đúng, máy tính sẽ thực hiện câu lệnh
sau đó quay lại bước 1.
- Nếu điều kiện có giá trị sai, câu lệnh sẽ bị bỏ qua và việc thực
hiện lệnh lặp kết thúc.
Sơ đồ minh họa câu lệnh lặp với số lần không xác định
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 17
Câu lệnh lặp với số lần chưa biết trước (repeat ... until...)
Cú pháp:
Repeat
Câu lệnh 1;
Câu lệnh 2;
.
Câu lệnh n;
Until (điều kiện);
Hoạt động:
Các câu lệnh giữa repeat và until sẽ được lặp lại nhiều lần khi nào
điều kiện sai, nếu điều kiện đúng thì ngưng (ngược với vòng lặp while). Đối
với lệnh này điều kiện sẽ được kiểm tra sau khi thực hiện các lệnh giữa
repeat và until nên ít nhất các lệnh sẽ được thực hiện trước 1 lần rồi mới
kiểm tra điều kiện đúng hay sai (nếu sai thì thực hiện tiếp vòng lặp, đúng thì
ngưng).
SƠ ĐỒ MINH HỌA CÂU LỆNH LẶP REPEAT UNTIL.
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 18
Bài toán minh họa: Viết chương trình nhập vào độ dài ba cạnh của một tam giác
(có ràng buộc điều kiện về dữ liệu nhập vào). Tính chu vi của hình tam giác tương
ứng.
var a,b,c:integer;
begin
repeat
repeat
write('Nhap a,b,c :');
read(a,b,c);
until (a>0) and (b>0) and (c>0);
until (a+b>c) and (a+c>b) and (b+c>a);
writeln;
writeln('Chu vi tam giac la:', a+b+c);
readln;
end.
So sánh hai câu lệnh while do và repeat until.
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 19
Ví dụ minh họa hai vòng lặp while do và repeatuntil áp
dụng viết chương trình tính tổng s=1+2+3++n. (n là một số nguyên được
nhập từ bàn phím).
Làm việc với dãy số .(var A:array[chỉ số đầu .. chỉ số cuối] of kiểu dữ
liệu;).
- Nhập dữ liệu cho một mảng a gồm n phần tử
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 20
For i:=1 to n do
Begin
Write(‘a[‘,I,’]=’);
Readln(a[i]);
End;
- Truy cập đến một phần tử của mảng a: a[chỉ số phần tử];
Bài tập minh họa cho phần dãy số: Viết chương trình nhập vào một mảng n số
nguyên ( 6<n<50)
a) In ra màn hình các số có trong mảng
b) In ra màn hình tổng các số âm có trong mảng.
c) In ra màn hình số lớn nhất của mảng.
Chương trình.
Var
A:array[1..55] of integer;
K,n,s,max:integer;
Begin
repeat
Write(“nhap so phan tu cua mang’);
Readln(n);
Until (n6);
For k:=1 to n do
Begin
Write(‘a[‘,k,’]=);
Readln(a[k]);
End;
Writeln(‘----------- cau a ----------‘);
Writeln(‘Cac so co trong day: ‘);
For k:=1 to n do write(a[k], ‘ ‘);
Writeln(‘ -----------cau b ------------‘);
S:=0;
For k:=1 to n do
If (a[k] mod 2 0) then s:=s+a[k];
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 21
Writeln(‘Tong cac so am = ‘,s);
Writeln(‘ --------- cau c ----------------‘);
Max:=a[1];
For k:=2 to n do
If (max <a[k]) then max:=a[k];
Writeln(‘So lon nhat cua day =’,max);
Readln;
End.
Chú ý: Nếu đề bài yêu cầu nhập vào một dãy n số nguyên dương thì trong ta
thêm repeat until như sau:
For k:=1 to n do
repeat
Write(‘a[‘,k,’]=);
Readln(a[k]);
Until (a[k]>0);
Phân dạng bài tập của học sinh theo chủ đề, giúp học sinh dễ dàng tiếp thu
kiến thức và đào sâu kĩ năng giải quyết vấn đề.
DẠNG : Vận dụng các phép toán +, -, *, /, Div, Mod để giải các bài toán cơ
bản.
Bài toán 1:Viết chương trình tính
Bài toán 2: Nhập vào 1 số tự nhiên có 4 chữ số. In ra màn hình tổng các chữ số có
trong dãy
Chú ý: Các bài toán này học sinh tự làm, giáo viên đánh giá và hướng dẫn thêm
(nếu học sinh có lỗi sai).
Bài Toán 3: Đổi 11890 giây ra ?giờ ?phút ?giây?
Chương trình:
Begin
Writeln(‘11890giay = ’,11890 div 3600,’ gio’,(11890 mod 3600) div
60, ‘phut’, (11890 mod 3600) mod 60, ‘giay’); end.
Chú ý: Giáo viên yêu cầu học sinh gán số 11890 cho biến a nào đó để việc lập trình
đơn giản hơn.
6
2
3
5 12
21
19 5
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 22
Dạng bài tập liên quan đến sử dụng biến cơ bản (Giúp học sinh làm quen với
cách khai báo và sử dụng biến trong chương trình).
Bài toán . Viết chương trình tính diện tích hình vuông với độ dài cạnh được nhập
từ bàn phím.
Chương trình
Var
a,s:real;
Begin
repeat
Write(‘Nhap do dai canh hinh vuong = ‘);
Readln(a);
Until (a>0);
S:=a*a;
Writeln(‘Dien tích hinh vuong= ‘,s:10:2);
Readln;End.
Dạng bài tập sử dụng câu lệnh if then
Giáo viên yêu cầu học sinh làm một số dạng toán khác về câu lệnh điều kiện
If then else như nhập vào một số tự nhiên, kiểm tra xem số vừa nhập có phải
là bội của 91 hay không? (a mod 91 =0; a la bội của 91), a có phải là ước của 91 hay
không? (91 mod a =0; a là ước của 91); Nhập vào hai số tự nhiên, kiểm tra xem số
này có phải là bội của số kia hay không?
Hay bài toán Nhập vào độ dài 3 cạnh một giác, kiểm tra xem ba có phải là
ba cạnh của một tam giác hay không? Nếu phải thì kiểm tra xem tam giác đó có
phải là tam giác vuông, tam giác cân, tam giác đều hay không? (Đề bài chưa yêu
cầu kiểm tra dữ liệu nhập vào, xem như độ dài nhập vào luôn đúng).
Gv cho học sinh tích đề, rồi tìm ra thuật toán của chương trình
- Dựa vào bất đẳng thức trong tam giác: “trong một tam giác tổng hai
cạnh bất kì luôn lớn hơn độ dài cạnh còn lại” để kiểm tra ba cạnh vừa
nhập có phải là 3 cạnh của một tam giác hay không? (a> b+c) and
(b>a+c) and (c>b+a).
- Kiểm tra tam giác đều bằng cách xem 3 cạnh có bằng nhau hết hay
không? (a=b=c; “(a=b) and (b=c) and (a=c)”). Nếu không bằng nhau
thì xuống kiểm tra tam giác cân?
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 23
- Kiểm tra xem tam giác cân bằng cách xem có hai cạnh nà bằng nhau
hay không? (a=b) or (a=c) or (b=c). Nếu không phải là tam giác cân
thì xuống kiểm tra tam giác vuông?
- Kiểm tra tam giác vuông (dựa vào định lí: Pitago): (a*a=b*b+c*c) or
(b*b=a*a+c*c) or (c*c=a*a+b*b).
dạng bài này sử dụng nhiều lệnh if then lồng nhau.
Dạng bài tập sử dụng câu lệnh lặp for to.. do..
Bài toán : Viết chương trình tính tổng s = 52 + 62 + ... + 192 (n được nhập từ bàn
phím).
Nhận xét. Trong biểu thức tính tổng trên, số hạng thứ i của tổng có thể được
tính theo công thức S(i) = i*i (i=5,6,...,19).
Chương trình được viết như sau:
Var
S,i:integer;
Begin
S:=0;
For i:=5 to 19 do s:=s +i*i;
Writeln(‘Tong =’,s);
Readln;End.
Một số bài tập khác, tuỳ theo đối tượng học sinh của mình mà giáo viên yêu cầu học
sinh làm cho phù hợp.
1. S=1+2-3+4-5+-n (n là số lẻ ; n>=3).
2. S = n! = 1*2*...*n {n giai thừa}
3. S= 1 + x + x2/2! + x3/3! + ... + xn/n!
Chú ý: Giáo viên cho học sinh về nhà làm những bài tập trên, có chỗ nào chưa hiểu
thì giáo viên hướng dẫn sau.
Dạng bài tập sử dụng câu lệnh while do
Bài toán 1: Viết chương trình tính tổng ( yêu cầu không sử dụng câu lệnh lặp for
to do..).
S = 12 + 13 + + 59
Cách 1. Dùng lệnh while do
Var
S,i: integer;
begin
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 24
s:=0;
i:=12;
while (i<=59) do
begin
s:=s+i;
i:=i+1;
end;
writeln(‘Tong =’, s);
readln;end.
Cách 2. Dùng lệnh repeat until
Var
S,i:integer;
begin
s:=0; i:=12;
repeat
s:=s+i;
i:=i+1;
until (i>59);
write(‘Tong =’,s);
readln;end.
Bài toán 2: Viết tìm n bé nhất sao cho
tổng s>4
Nhận xét:
- Trong biểu thức trên, số hạng thứ i của tổng có thể tính được theo
công thức S(i) = 1/ i với (i=1,2,...,n).
- Điều kiện để dừng vòng lặp là tổng S phải lớn hơn 4
Var i : Integer; S:Real;
Begin
S:=0; i:=0;
While (S < =4) do
Begin
1 1 1
1 ...
2 3
S
n
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 25
i := i + 1;
S := S + 1/i ;
End;
Writeln( ' n be nhat =’,i);
Readln;End.
Dạng bài tập về mảng
- Nhập xuất mảng, tính toán với các phần tử của mảng, sắp xếp mảng,
đếm các phần tử của mảng, tìm kiếm phần tử trong mảng, số chính
phương và số nguyên tố trong mảng, , ghép mảng.
Bài toán : Viết chương trình nhập vào một dãy số nguyên gồm n phần tử.
a) Sắp xếp mảng theo thứ tự tăng dần
b) In ra màn hình các số chính phương có trong mảng.
c) In ra màn hình các số nguyên tố có trong mảng.
(Giáo viên chú ý cho học sinh, Bài này nếu dùng chương trình con thì việc giải
quyết bài toán sẽ gọn hơn; tuy nhiên cho đến thời điểm hiện tại thì ta sẽ giải quyết
bài toán bằng những kiến thức cơ sở đã học; Ở những tiết ôn luyện về sau ta sẽ sử
dụng chương trình con để làm).
Chương trình được viết như sau:
Var a:array[1..100] of INT64;
n,i,j,kt:integer;
begin
write(‘nhap so phan tu cua mang n =’);readln(n);
for i:=1 to n do
begin
write(‘a[‘i,’]=’);
readln(a[i]);
end;
writeln(‘------------cau a ------------------‘);
for i:=1 to (n-1) do
for j:=i+1 to n do
If (a[i]>a[j]) then
Begin
Tam:=a[i];
”Đề tài: “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”
Người viết: Đinh Thị Thiên Nga Trường THCS Lương Thế Vinh Trang 26
A[i]:=a[j];
A[j]:=tam;
End;
Writeln(‘Day so duoc sap xep theo thu tu tang dan: ‘);
For i:=1 to n do write(a[i],’ ‘);
Writeln;
Writeln(‘ --------- cau b -----------------‘);
Writeln(‘Cac so nguyen to co trong day: ‘);
For i:=1 to n do
Begin
Kt:=0;
For j:=2 to trunc(sqrt(a[i]) ) do
If (a[i] mod j = 0) then kt:=1;
If (kt =0) then write(a[i],’ ‘);
End;
Writeln;
Writeln(‘-----------------cau c -------------------‘);
Writeln(‘Cac so chinh phuong co trong day: ‘);
For i:=1 to n do
For j:=1 to (trunc(sqrt(a[i]) +1) do
If (j*j = a[i]) then write(a[i], ‘ ‘);
Readln;
End.
Tuỳ theo đối tượng học sinh giáo viên cho thêm một số bài toán tựơng tự và một số
dạng toán về mảng nữa. Ví dụ như: Cho một mảng số nguyên n phần tử (n<30).
Tìm dãy con m phần tử(m<n) sao cho dãy con này có tổng lớn nhất.
Giáo viên hướng dẫn sơ ý tưởng thuật toán:
- K:=1; {Vị trí phần tử đầu tiên củTài liệu đính kèm: