Ngôn Ngữ Pascal

minhphuc

New member
Tại sao Pascal được dạy đầu tiên khi bước vào học lập trình?

Có nhiều lý do nhưng các lý do nhiều người công nhận:

1. Pascal là ngôn ngữ căn bản.
2. Vì nó là căn bản nên nó chuẩn, đơn giản và dễ hiểu.
3. Cái gì đơn giản và dễ hiểu thì sẽ dễ tiếp cận.
4. Ngôn ngữ Pascal giúp người học về lập trình hơn là học về ngôn ngữ lập trình.
...

Ngoài ra, theo kết quả nghiên cứu của một số trường ĐH ở nước ngoài cho thấy người bắt đầu học ngôn ngữ lập trình Pascal sẽ tiếp thu các ngôn ngữ lập trình khác nhanh hơn.

Các bạn học sinh trung học chưa yêu ngôn ngữ lập trình Pascal, tại sao?
Câu trả lời đơn giản: bạn chưa hiểu Pascal, hoặc hiểu nhưng chưa biết lập trình thế nào, hoặc biết lập trình nhưng chưa phân tích được vấn đề.

Vậy các bạn hãy gởi bất kỳ câu hỏi/bài tập về ngôn ngữ này, anh chị em đã từng kinh nghiệm sẽ giúp các bạn trong khả năng có thể? (Đặc biệt mùa thi đang đến gần :-c)

Trong khi chờ đợi câu hỏi từ các bạn, thành viên CLB tin học sẽ thu gom, lượm lặt các câu hỏi về Pascal để cùng giải đáp.
 

kubi

New member
học cái này cũng thú lắm,đã từng đi thi HSG môn này suýt có giải hehe
 

minhphuc

New member
Bài tập 1

Chúng ta cùng bắt đầu với bài tập thứ 1. (Đây là đề ôn thi môn tin học dành cho học sinh lớp 11 của một trường PTTH)


1. Viết chương trình nhập 2 số tự nhiên N va M . Hãy in các ước nguyên tố trong đoạn [min(M,N), max (N,M)], cho biết có bao nhiêu số nguyên tố và tổng của chúng. Chương trinh kết thúc khi nhâp M=N.



p/s: đây là những bài tập dành cho các em học sinh phổ thông nên tương đối dễ so với các bạn sinh viên CNTT. Tuy nhiên các bạn có thể dùng những giải thuật nhằm tối ưu hóa. Thân mến!
 

rcp

Administrator
Ðề: Bài tập 1

Chúng ta cùng bắt đầu với bài tập thứ 1. (Đây là đề ôn thi môn tin học dành cho học sinh lớp 11 của một trường PTTH)


1. Viết chương trình nhập 2 số tự nhiên N va M . Hãy in các ước nguyên tố trong đoạn [min(M,N), max (N,M)], cho biết có bao nhiêu số nguyên tố và tổng của chúng. Chương trinh kết thúc khi nhâp M=N.

p/s: đây là những bài tập dành cho các em học sinh phổ thông nên tương đối dễ so với các bạn sinh viên CNTT. Tuy nhiên các bạn có thể dùng những giải thuật nhằm tối ưu hóa. Thân mến!

hihi.. minhphúcc làm các em giật mình..

đề tài này tưởng là khó.. nhưng niú các bạn chia làm 4 phần, như:

phần 1) Viết chương trình nhập 2 số tự nhiên N va M

phần 2) Hãy in các ước nguyên tố trong đoạn [min(M,N), max (N,M)]

phần 3) cho biết có bao nhiêu số nguyên tố và tổng của chúng

và phần 4) Chương trinh kết thúc khi nhâp M=N.

-----------------o0o -----------------
phần 1) Viết chương trình nhập 2 số tự nhiên N va M
-----------------------------------------------------------------------
Uses Crt;


SoN, SoM: Integer; // đăng kí 2 số nguyên (Integer) N và M


Procedure Nhap();
Begin
Write(' nhập 1 số tự nhiên thứ nhất: ');
Readln(SoN); // tiếp nhận số N
Write(' nhập 1 số tự nhiên thứ hai: ');
Readln(SoM); // tiếp nhận số N
End;


phần 2) Hãy in các ước nguyên tố trong đoạn [min(M,N), max (N,M)]
-----------------------------------------------------------------------
a) ở đây, bạn nên tìm ra có đc những con số nhỏ nhất của cặp M và N: min(M,N)
b) ở đây, bạn nên tìm ra có đc những con số lớn nhất của cặp M và N: max (M,N)

nghĩa là... seo hén ...


hihi.. mình giải thix.. hok bit có đc rõ nghĩa lém chăng.. Mong bạn giải cho chút ý kiến hén...

--- rcp ---
 

minhphuc

New member
phần 2) Hãy in các ước nguyên tố trong đoạn [min(M,N), max (N,M)]
-----------------------------------------------------------------------
a) ở đây, bạn nên tìm ra có đc những con số nhỏ nhất của cặp M và N: min(M,N)
b) ở đây, bạn nên tìm ra có đc những con số lớn nhất của cặp M và N: max (M,N)

Để tìm max và min của 2 số SoM, SoN (hì hì, cái này là dễ nên Phúc xung phong làm nhường các bạn phần khó hơn)

var soMin, soMax: integer;

procedure tim_Gia_Tri _Min_Max()

begin
soMin = SoM;
soMax = SoN;

if (SoM > SoN) then

begin
soMin = SoN;
soMax = SoM;
end;
end;

-----------------------------------------------------------------------------------------------
Thêm một hàm kiểm tra số nguyên tố để bà con không mắng vốn,


function kiem_Tra_La_So_Nguyen_To(soCanKiemTra: integer):boolean;
var idx, gt: integer;
var isNguyenTo: boolean;


begin //bat dau function
isNguyenTo:=true;

if soCanKiemTra=1 then isNguyenTo:=false;


if (soCanKiemTra > 2) then
begin //bat dau khoi lenh trong if

gt:= trunc(sqrt(soCanKiemTra));
idx:=2;

while (idx<= gt and isNguyenTo == true) do
begin //bat dau khoi lenh do

if soCanKiemTra mod idx=0 then isNguyenTo:=false;
idx:=idx+1;
end; //ket thuc do

end; //ket thuc if

kiem_Tra_La_So_Nguyen_To:= isNguyenTo;
end; //ket thuc function


Công đoạn tiếp theo là tìm các ước số nguyên tố của đoạn [soMin, soMax] thì mời thành viên tiếp theo
 
Sửa lần cuối:

rcp

Administrator
ha ha... mừng wá... mừng wá ... cũm ơn bạn minhphuc giúp cho hàm kiểm tra số nguyên tố để bà con không mắng vốn,

dzay thi chúng ta có đc:

phần 1) Viết chương trình nhập 2 số tự nhiên N va M
-----------------------------------------------------------------------
Uses Crt;


SoN, SoM: Integer; // đăng kí 2 số nguyên (Integer) N và M


Procedure Nhap();
Begin
Repeat
Begin
Write(' nhập 1 số tự nhiên thứ nhất: ');
Readln(SoN); // tiếp nhận số N
End // của If kiem_Tra_La_So_Nguyen_To(SoN)
// kiễm tra cho đến khi nào ngta cho dzô một số nguyên
If (kiem_Tra_La_So_Nguyen_To(SoN) == false) then
then Writeln(' số tự nhiên thứ nhất phải là số nguyên khác mí 0 (dzéro) ');
Until SoN<>0;
End // của Repeat
End // của If kiem_Tra_La_So_Nguyen_To(SoN)

Repeat
Begin
Write(' nhập 1 số tự nhiên thứ hai: ');
Readln(SoM); // tiếp nhận số N
End // của If kiem_Tra_La_So_Nguyen_To(SoM)
// kiễm tra cho đến khi nào ngta cho dzô một số nguyên
If (kiem_Tra_La_So_Nguyen_To(SoM) == false) then
then Writeln(' số tự nhiên thứ hai phải là số nguyên khác mí 0 (dzéro) ');
Until SoM<>0;
End // của Repeat
End // của If kiem_Tra_La_So_Nguyen_To(SoN)


End; // Procedure Nhap()

--- rcp ---
 
Sửa lần cuối:

minhphuc

New member
phần 1) Viết chương trình nhập 2 số tự nhiên N va M
-----------------------------------------------------------------------
Uses Crt;


SoN, SoM: Integer; // đăng kí 2 số nguyên (Integer) N và M


Procedure Nhap();
Begin
Repeat
Begin
Write(' nhập 1 số tự nhiên thứ nhất: ');
Readln(SoN); // tiếp nhận số N
End // của If kiem_Tra_La_So_Nguyen_To(SoN)
// kiễm tra cho đến khi nào ngta cho dzô một số nguyên
If (kiem_Tra_La_So_Nguyen_To(SoN) == false) then
then Writeln(' số tự nhiên thứ nhất phải là số nguyên khác mí 0 (dzéro) ');
Until SoN<>0;
End // của Repeat
End // của If kiem_Tra_La_So_Nguyen_To(SoN)

....

Hì hì, không biết đoạn ni làm chi hết Rcp ơi!

If (kiem_Tra_La_So_Nguyen_To(SoN) == false) then
Writeln(' số tự nhiên thứ nhất phải là số nguyên khác mí 0 (dzéro) ');

Phải kiểm tra số nhập vào khác 0 và phải là số tự nhiên chứ ạ!
 

rcp

Administrator
Hì hì, không biết đoạn ni làm chi hết Rcp ơi!

If (kiem_Tra_La_So_Nguyen_To(SoN) == false) then
Writeln(' số tự nhiên thứ nhất phải là số nguyên khác mí 0 (dzéro) ');

Phải kiểm tra số nhập vào khác 0 và phải là số tự nhiên chứ ạ!


hihi.. minhphuc nói đúng.. rcp xí lộn..nên viết lại...

phần 1) Viết chương trình nhập 2 số tự nhiên N va M
-----------------------------------------------------------------------
Uses Crt;


SoN, SoM: Integer; // đăng kí 2 số nguyên (Integer) N và M

Procedure Nhap();
Begin
Write(' nhập 1 số tự nhiên thứ nhất: '); Readln(SoN); // tiếp nhận số N
Write(' nhập 1 số tự nhiên thứ hai: '); Readln(SoM); // tiếp nhận số M
End;


phần 2a) Để tìm max và min của 2 số SoM, SoN
---------------------------------------------------------------

var soMin, soMax: integer;
procedure tim_Gia_Tri _Min_Max()

begin
soMin = SoM;
soMax = SoN;

if (SoM > SoN) then

begin
soMin = SoN;
soMax = SoM;
end;
end;


phần 2b) với một hàm kiểm tra số nguyên tố, in các ước nguyên tố trong đoạn [min(M,N), max (N,M)]
---------------------------------------------------------------

function kiem_Tra_La_So_Nguyen_To(soCanKiemTra: integer):boolean;
var idx, gt: integer;
var isNguyenTo: boolean;


begin //bat dau function
isNguyenTo:=true;

if soCanKiemTra=1 then isNguyenTo:=false;


if (soCanKiemTra > 2) then
begin //bat dau khoi lenh trong if

gt:= trunc(sqrt(soCanKiemTra));
idx:=2;

while (idx<= gt and isNguyenTo == true) do
begin //bat dau khoi lenh do

if soCanKiemTra mod idx=0 then isNguyenTo:=false;
idx:=idx+1;
end; //ket thuc do

end; //ket thuc if

kiem_Tra_La_So_Nguyen_To:= isNguyenTo;
end; //ket thuc function


hihi.. các bạn nào viết tip hẻn..
với một hàm kiểm tra số nguyên tố,
mần răng mờ in ra được các ước nguyên tố trong đoạn [min(M,N), max (N,M)]


Hướng dẫn algorithm:
a) Số nguyên tố là số chỉ chia hết cho 1 và chính nó . (
kiem_Tra_La_So_Nguyen_To(soCanKiemTra: integer) == true)
b) Như vậy, hướng giải quyết là chạy vòng lặp (dùng for hay repeat...until), với số lần lặp max = chính số n.
- Bên trong vòng lặp, chia n cho counter, nếu chia hết thì break, nếu không thì chạy tiếp.
- Thêm một biến làm flag, nếu chạy được hết toàn bộ các lần lặp (kiểm tra qua giá trị của flag) thì đưa n vào một array. Nếu vòng lặp bị break thì thôi.
- Như vậy, có thể kiểm tra các số từ 1 đến n có bao nhiêu số nguyên tố, và các số đó là số nào.

Mời các bạn thực hành xem hẻn...


--- rcp ---
 
Sửa lần cuối:

minhphuc

New member
Và đây là đoạn code đã của bài tập trên. Có thể có lỗi cú pháp trong đoạn code này vì Phúc chưa chạy thử.

************************************************** ***************
program tim_Uoc_So_Nguyen_To_va_Tinh_Tong
Uses Crt;

//---------------------------------------------------------------khai bao bien
var SoN, SoM: Integer;
var soMin, soMax: integer;
var tong, bienDemUSNT: integer;
var idx, giatri, uocso, soTunhien: integer;

//---------------------------------------------------------------nhap so nguyen duong N va M
Procedure Nhap();
Begin
----------repeat
--------------------Write(' nhap so tu nhien thu nhat: '); Readln(SoN);
----------until ( 0 < SoN);

----------repeat
--------------------Write(' nhap so tu nhien thu hai: '); Readln(SoM);
----------until (0 < SoM);
End;

//---------------------------------------------------------------tim max, min cua SoN va SoM
procedure tim_Gia_Tri _Min_Max()
begin
----------soMin = SoM;
----------soMax = SoN;

----------if (SoM > SoN) then
----------begin
--------------------soMin = SoN;
--------------------soMax = SoM;
----------end;
end;

//---------------------------------------------------------------Kiem tra mot so tu nhien co phai la so nguyen to
function kiem_Tra_La_So_Nguyen_To(soCanKiemTra: integer):boolean;
var isNguyenTo: boolean;

begin //bat dau function
----------isNguyenTo:=true;

----------if soCanKiemTra=1 then isNguyenTo:=false;

----------if (soCanKiemTra > 2) then
----------begin //bat dau khoi lenh trong if
--------------------giatri := trunc(sqrt(soCanKiemTra));
--------------------idx:=2;
--------------------while (idx <= giatri and isNguyenTo = true) do
--------------------begin //bat dau khoi lenh do
------------------------------if soCanKiemTra mod idx=0 then isNguyenTo:=false;
------------------------------idx:=idx+1;
--------------------end; //ket thuc do
----------end; //ket thuc if

----------kiem_Tra_La_So_Nguyen_To:= isNguyenTo;
end;

//--------------------------------------------------------------- Chuong trinh chinh
begin
----------repeat
----------begin

--------------------tong :=0;
--------------------bienDemUSNT :=0;

--------------------// nhap vao so N va M
--------------------Nhap();

--------------------// tim so min va max
--------------------tim_Gia_Tri _Min_Max();

--------------------for soTunhien:= soMin to soMax do
--------------------begin
------------------------------if (kiem_Tra_La_So_Nguyen_To(soTunhien)) then
------------------------------begin
----------------------------------------tong :=tong + soTunhien;
----------------------------------------bienDemUSNT := bienDemUSNT + 1;
------------------------------end
------------------------------else
------------------------------begin
----------------------------------------giatri := trunc(sqrt(soTunhien));

----------------------------------------for idx:=2 to giatri do
----------------------------------------begin
--------------------------------------------------uocso := soTunhien/idx;
--------------------------------------------------if ((soTunhien mod idx = 0) and kiem_Tra_La_So_Nguyen_To(uocso)) then
--------------------------------------------------begin
------------------------------------------------------------tong :=tong + uocso;
------------------------------------------------------------bienDemUSNT := bienDemUSNT + 1;
--------------------------------------------------end;
----------------------------------------end;
------------------------------end;
--------------------end;

--------------------writeln ('So luong uoc so nguyen to can tim', bienDemUSNT);
--------------------writeln ('Tong cua cac uoc so nguyen to can tim', tong);
----------end;
----------until (SoM = SoN);
end.
 
Sửa lần cuối:

seoitc

New member
Cảm ơn bạn đã chia sẻ .
Bài viết của bạn rất thú vị .
 

Facebook Comment

Similar threads
Thread starter Tiêu đề Diễn đàn Trả lời Ngày
rcp Khoá 2: Đào tạo lập trình viên căn bản cấp 1 với ngôn ngữ Pascal Góc lập trình 2
rcp Làm thế nào để xuất kết quả ra file bằng ngôn ngữ Pascal / C ? Pascal 6
rcp Khoá 1 : Đào tạo lập trình viên căn bãn cấp 1 với ngôn ngữ Pascal. Góc lập trình 15
C [Xã hội] “Ngôn ngữ” bánh mứt Tin tức 24h 0
binho243 Bất đồng ngôn ngữ Tủ sách văn học 0
kimminhho Phim Lý Công Uẩn chỉ khác phim về Tần Thủy Hoàng ở NGÔN NGỮ Rạp chiếu phim 7
X Nên học ngôn ngữ lập trình nào.... :D Hỏi đáp Tin học 15
Q Website giới thiệu Hà Nội bằng 4 ngôn ngữ Tin tức 24h 0
ritter_bin Giáo trình ngôn ngữ C [Tiếng Việt] C/C++ 2
S [PHP] Lập trình website với ngôn ngữ PHP Ngôn ngữ WEB 11
nhocty Ngôn Ngữ Kí Hiệu Kỹ năng mềm 4
A Ngôn ngữ 9x! Viết về Đà Nẵng 1
naughtyboy77621 Phương pháp luyện nghe của một thầy giáo biết 6 ngôn ngữ. Kỹ Năng Nghe Nói 2
E Ngôn ngữ dùng trong chat Để Học Tiếng Anh Hiệu Quả 0
G Ngôn ngữ Việt Tủ sách văn học 24
bimappk Linux đã “nói” được ngôn ngữ của Windows Software 1
BNN [Tùy bút] Người phát ngôn của dân! Viết về Đà Nẵng 0
N Những câu danh ngôn nổi tiếng Trung quốc CLB Tiếng Trung 0
N Những câu danh ngôn nổi tiếng Trung quốc CLB Tiếng Trung 5
D Truyện ngắn: 'Ngụ ngôn về giọt nước mắt' Truyện Ngắn 0
B Người phát ngôn Bộ Ngoại giao: Trung Quốc vi phạm nghiêm trọng chủ quyền VN Tin tức 24h 4
Viết Sang Tuyên ngôn Độc Lập - KHO SÁCH DOWNLOAD Lược sử 0
M Danh Ngôn Nghệ thuật sống 1
V Hãy cùng nhau bình luận về Ngôn Thừa Húc nèo.... Tin tức 24h 0
T Truyện ngụ ngôn - Chuyện hai con ngựa Truyện Ngắn 0
T Truyện ngụ ngôn - Tham ăn Truyện Ngắn 3
N Danh ngôn tài chính và bí quyết làm giàu Khởi Nghiệp 0
Q Những mỹ nhân Hoa ngữ sở hữu vẻ đẹp tự nhiên không tỳ vết Tin tức 24h 0
Q Top những mỹ nhân đa tình nhất làng giải trí Hoa ngữ Tin tức 24h 0
L Học ngoại ngữ bằng... thơ CLB Tiếng Anh 0
C [Giáo dục] Những bất cập trong dạy và học môn ngữ văn Tin tức 24h 0
rcp 5 lỗi phổ biến nhất khi học một ngoại ngữ CLB NGOẠI NGỮ 0
BNN [Sổ tay] Thuật ngữ THƯƠNG HIỆU - Chuyên đề Xây dựng thương hiệu 28
philong1407 [Nhà Đất] Cần bán gấp nhà đường Đặng Văn Ngữ, Q.Phú Nhuận, tiện buôn bán. QUẢNG CÁO - RAO VẶT 0
T "Thành ngữ với “NO”" CLB NGOẠI NGỮ 1
S Kho tài liệu học tập - ngoại ngữ - luận văn miễn phí Kho download 0
J Cù Lao Chàm và ngữ nghĩa chữ Cù Lao Hội An Hoài Phố 2
BNN [Văn hóa] Ngữ nghĩa địa danh Đà Nẵng Lịch sử Đà Nẵng 0
BNN [Giáo dục] Đóng cửa 21 trung tâm tin học - ngoại ngữ Tin tức 24h 0
M Bài tập ngữ pháp và ôn thi TOEIC Online CLB Tiếng Anh 0
thuytien155 [Giáo Dục] Trung tâm hoa ngữ đà nẵng Giáo dục - Việc làm 0
BNN [Giáo dục] Nữ sinh ĐH Ngoại Ngữ Đà Nẵng rạch mặt bạn vì ghen Tin tức 24h 5
thuytien155 5 bí kíp tự tạo cảm hứng học hán ngữ cho mình CLB Tiếng Trung 1
binho243 CLB Ngoại ngữ DNG thông báo khởi động lại lớp học Anh ngữ CLB Tiếng Anh 2
N [Trường học] Hỏi đáp: Đại học Ngoại ngữ Đà Nẵng Địa chỉ Đà Nẵng 1
bachsa Một số hình ảnh học viên khóa anh ngữ thực hành giao tiếp với người bản xứ CLB Tiếng Anh 1
binho243 Thông báo dời buổi học Anh ngữ từ 8h xuống 14h CLB Tiếng Anh 0
B Tìm nơi học ngữ pháp CLB Tiếng Anh 0
bachsa Danh sách chính thức khóa đàm thoại Anh ngữ lớp 2 cấp 1 CLB Tiếng Anh 12
binho243 CLB Ngoại ngữ thông báo tuyển sinh LỚP 2 - CẤP 1 CLB Tiếng Anh 6

Similar threads

Top