DỊCH VỤ THÀNH LẬP CÔNG TY TẠI ĐÀ NẴNG
DU LỊCH ĐÀ NẴNG THÀNH LẬP CÔNG TY SỞ HỮU TRÍ TUỆ TOUR
Trở lại   DIỄN ĐÀN ĐÀ NẴNG - DANANG FORUM > LIÊN MỤC: CÁC CÂU LẠC BỘ > CLB TIN HỌC > Góc lập trình > Pascal

Gởi Ðề Tài Mới  Trả lời
 
Ðiều Chỉnh Xếp Bài
  #1  
Cũ 20-04-2009, 12:04 PM
minhphuc's Avatar
minhphuc minhphuc vẫn chưa có mặt trong diễn đàn
Thuỷ Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 599
Cảm ơn: 2,089
Được cảm ơn 1,169/412 bài viết
minhphuc is on a distinguished road
Mặc định Ngôn Ngữ Pascal

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 )

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.

Trả Lời Với Trích Dẫn
  #2  
Cũ 20-04-2009, 12:25 PM
kubi's Avatar
kubi kubi vẫn chưa có mặt trong diễn đàn
Mộc Sơn
 
Tham gia ngày: Jul 2008
Đến từ: Hõi chúa ấy
Bài gởi: 174
Cảm ơn: 75
Được cảm ơn 144/59 bài viết
kubi is on a distinguished road
Mặc định

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

Trả Lời Với Trích Dẫn
  #3  
Cũ 21-04-2009, 09:40 AM
minhphuc's Avatar
minhphuc minhphuc vẫn chưa có mặt trong diễn đàn
Thuỷ Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 599
Cảm ơn: 2,089
Được cảm ơn 1,169/412 bài viết
minhphuc is on a distinguished road
Mặc định 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!

Trả Lời Với Trích Dẫn
  #4  
Cũ 23-04-2009, 07:34 AM
rcp's Avatar
rcp rcp vẫn chưa có mặt trong diễn đàn
Hỏa Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 1,440
Cảm ơn: 3,259
Được cảm ơn 2,482/927 bài viết
rcp is on a distinguished road
Smile Ðề: Bài tập 1

Trích:
Nguyên văn bởi minhphuc Xem Bài viết
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 ---
Trả Lời Với Trích Dẫn
  #5  
Cũ 23-04-2009, 06:31 PM
minhphuc's Avatar
minhphuc minhphuc vẫn chưa có mặt trong diễn đàn
Thuỷ Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 599
Cảm ơn: 2,089
Được cảm ơn 1,169/412 bài viết
minhphuc is on a distinguished road
Mặc định Ðề: Ngôn Ngữ Pascal

Trích:
Nguyên văn bởi rcp Xem Bài viết

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


thay đổi nội dung bởi: minhphuc, 24-04-2009 lúc 11:06 AM
Trả Lời Với Trích Dẫn
  #6  
Cũ 24-04-2009, 06:32 AM
rcp's Avatar
rcp rcp vẫn chưa có mặt trong diễn đàn
Hỏa Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 1,440
Cảm ơn: 3,259
Được cảm ơn 2,482/927 bài viết
rcp is on a distinguished road
Mặc định Ðề: Ngôn Ngữ Pascal

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

thay đổi nội dung bởi: rcp, 24-04-2009 lúc 06:57 AM
Trả Lời Với Trích Dẫn
  #7  
Cũ 24-04-2009, 09:44 AM
minhphuc's Avatar
minhphuc minhphuc vẫn chưa có mặt trong diễn đàn
Thuỷ Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 599
Cảm ơn: 2,089
Được cảm ơn 1,169/412 bài viết
minhphuc is on a distinguished road
Mặc định Ðề: Ngôn Ngữ Pascal

Trích:
Nguyên văn bởi rcp Xem Bài viết
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ứ ạ!

Trả Lời Với Trích Dẫn
  #8  
Cũ 24-04-2009, 06:57 PM
rcp's Avatar
rcp rcp vẫn chưa có mặt trong diễn đàn
Hỏa Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 1,440
Cảm ơn: 3,259
Được cảm ơn 2,482/927 bài viết
rcp is on a distinguished road
Mặc định Ðề: Ngôn Ngữ Pascal

Trích:
Nguyên văn bởi minhphuc Xem Bài viết
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 ---

thay đổi nội dung bởi: rcp, 24-04-2009 lúc 09:07 PM
Trả Lời Với Trích Dẫn
  #9  
Cũ 28-04-2009, 04:27 PM
minhphuc's Avatar
minhphuc minhphuc vẫn chưa có mặt trong diễn đàn
Thuỷ Sơn
 
Tham gia ngày: Oct 2008
Bài gởi: 599
Cảm ơn: 2,089
Được cảm ơn 1,169/412 bài viết
minhphuc is on a distinguished road
Mặc định Ðề: Ngôn Ngữ Pascal

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.


thay đổi nội dung bởi: minhphuc, 28-04-2009 lúc 05:01 PM
Trả Lời Với Trích Dẫn
  #10  
Cũ 28-10-2010, 11:22 AM
vuakeomut9x's Avatar
vuakeomut9x vuakeomut9x vẫn chưa có mặt trong diễn đàn
Huyền Không Động
 
Tham gia ngày: Oct 2010
Đến từ: Chưa cập nhập
Bài gởi: 4
Cảm ơn: 1
Được cảm ơn 0/0 bài viết
vuakeomut9x is on a distinguished road
Mặc định Ðề: Ngôn Ngữ Pascal

các bạn có thể chỉ 1 cách chi tiết cho mình được k.
nếu được liên hệ với mình qua yahoo: hoaanhdao_1992_hlat
hoặc gmail vuakeomut1992@gmail.com
nha
tk các bạn trước nha
Trả Lời Với Trích Dẫn
Gởi Ðề Tài Mới  Trả lời


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh
Xếp Bài

Chuyển đến

DNG Forum

Tel: 0236.3707404 - Hotline: 0915.888404
© Danang Travel - Managed by DNG Business

THÀNH LẬP CÔNG TY TẠI ĐÀ NẴNG | ĐĂNG KÝ NHÃN HIỆU TẠI ĐÀ NẴNG | ĐĂNG KÝ MÃ VẠCH TẠI ĐÀ NẴNG | BẢO HỘ NHÃN HIỆU TẠI ĐÀ NẴNG
Liên Lạc - DaNang Forum - Lưu Trữ - Lên Trên