Thứ Sáu, 24 tháng 2, 2012

Tính tổng chỉ sổ cột hàng chẵn trong mảng 2 chiều

Lập chương trình nhập mảng 2 chiều m hàng n côt. tính và in ra màn hình tổng các phần tử có chỉ số hàng chẵn, chỉ số cột lẹ M, N được nhập từ bàn phím.


Var a:array[1..100,1..100] of integer;
    i,j,m,n:integer;
Begin
  Write('Nhap so hang va cot');readln(m,n);
  For i:=1 to m do
  For j:=1 to n do
  begin
    write('A[',i,',',j,']=');readln(a[i,j]);
  end;
  i:=2;j:=1;
  While i<=m do
  begin
  While j<=n do
   begin
    write('A[',i',',j,']='a[i,j],'   '); j:=j+2;
   end;
  i:=i+2;
  end;
  Readln;
End.

Đảo ngược mảng 1 chiều

Lập chương trình thực hiện đảo ngược mảng số đó.

Var a:array[1..100] of integer;
    n,i:integer;
Begin
  write('Do dai cua mang can nhap?');readln(n);
  For i:=1 to n do
  begin
    write('Phan tu thu ',i,'=?');readln(a[i])
  end;
  writeln('Mang dao nguoc la :');
  For i:=n downto 1 do write(a[i]:5);
  Readln;
End.

Dãy Tribonacci

Dãy Tribonacci là dãy 1 , 1 , 2 , 3 , 7 , 13 , 24... dãy này được sinh ra bới công thức đệ qui sau :
Tr(1) = 1 , Tr(2) = 1 , Tr(3) = 2 , Tr(k) = Tr(k-1)+Tr(k-2)+Tr(k-3) ... với 3< k <37
Mọi số tự nhiên N đều có thể biểu diễn duy nhất dưới dạng tổng của một số số trong dãy Tribonacci.
VD: 17 = 13 + 4; 30 = 24 + 4 + 2;
Cho trước số tự nhiên N nhập từ bàn phím. Viết chương trình tìm biểu diễn Tribonacci của số N.

Ý tưởng: Xây dựng 1 mảng số Tribonacci từ 1 tới 37 (đến 37 vì theo đề bài ...), rồi duyệt từng phần tử của dãy Tribonacci, nếu n> Tribonacci[i] thì in ra Tribonacci[i] và giảm n tới khi n<0 thì thôi.

Uses crt;
Const
  max=37;
Var
  a:array[1..max] of longint;
  n,i:longint;
BEGIN
  Clrscr;
  a[1]:=1; a[2]:=1; a[3]:=2;
  For i:=4 to max do
    a[i]:=a[i-1]+a[i-2]+a[i-3];
  Write('Nhap so n:'); readln(n);
  i:=max;
  While a[i]>n do i:=i-1;
  Write(n,'=',a[i]);
  n:=n-a[i];
  While n>0 do
    Begin
      i:=i-1;
      If n>=a[i] then
        Begin
          Write('+',a[i]);
          n:=n-a[i];
        End;
    End;
  Readln;
END.

Số hoàn thiện

Một số có tỗng các ước nhỏ hơn nó bằng chính nó dc gọi là số hoàn chỉnh.VD 6 có ước nhỏ hơn nó là 1,2,3. Tổng là 1+2+3=6.Viết chương trình xét xem một số n dược nhập từ bàn phím có phải là số hoàn chỉnh không.
PROGRAM hoanthien;
VAR n:INTEGER;
FUNCTION kiemtra(x:INTEGER):BOOLEAN;
VAR tam,i:INTEGER;
BEGIN
tam:=0; kiemtra:=FALSE;
FOR i:= 1 TO (x DIV 2) DO
IF x MOD i = 0 THEN tam:=tam+i;
IF tam = x THEN kiemtra:=TRUE;
END;
BEGIN
writeln('Nhap so can kiem tra ');
readln(n);
IF kiemtra(n) THEN writeln('So ',n,' la so hoan thien')
ELSE
writeln('So ',n,' khong phai la so hoan thien');
readln;
END.

Đếm số nguyên tổ trong mảng 1 chiều

Trong bài viết trước, Code Pascal đã giới thiệu cách xác định tính nguyên tố của 1 số được nhập vào từ bàn phím. Mở rộng đề bài ra thành đếm số nguyên tố trong dãy số N được nhập vào từ bàn phím cũng không quá khó.

Có rất nhiều cách để giải bài toán này, cách dưới đây tuy không bám sát vào cách làm trong bài viết Kiểm tra số nguyên tổ trong pascal nhưng cũng khá dễ hiểu.

var i,j,n:Integer;
    A:array[1..50] of Integer;
begin
      write('nhap n:');
      readln(n);
      for i:=1 to n do
      begin
            write('nhap a[',i,'] ');
            readln(a[i]);
      end;
      j:=1;
      for i:=1 to n do
            if a[i]>1 then
            begin
                 repeat
                       inc(j);
                 until (a[i] mod j=0);
                 if j>(a[i] div 2) then inc(d);
                 j:=1;
            end;
      write('Co ',d,' so ngto trog day');
      readln;
end.

Kiểm tra số nguyên tổ trong pascal

Nhập vào 1 số. Xác định xem số đó có phải số nguyên tố hay không.

Đây là một bài toán rất căn bản trong Pascal. Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là n, ta cho i chạy từ 2 đến n-1, nếu n chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là n không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 1 đến phần nguyên căn 2 của N. Như thế thuật toán sẽ tối ưu hơn.


program kiem_tra_nguyen_to;
uses crt;
var n,i:integer; bl:boolean;
begin
 clrscr;
 bl:=true;
 write('nhap vao so can kiem tra tinh nguyen to: '); readln(n);
 if n<=1 then bl:=false;
 for i:=2 to trunc(sqrt(n)) then
  if n mod i=0 then bl:=false;
 if bl=true then write('so vua nhap nguyen to.')
 else write('so vua nhap khong nguyen to.');
readln;
end.

Bouns: Chứng minh: Chỉ cần xét từ 1 đến phần nguyên căn 2 của N thay vì xét đến N: 
Lấy ví dụ số không nguyên tố:
9=3*3
12=3*4
18=2*9=3*6
20=4*5=2*10
trong các ví dụ trên, các số không nguyên tố được phân tích thành tích các cặp ước của chúng, trong mỗi cặp số nhỏ đứng trước, số lớn đứng sau. Trong mỗi cặp, ta có thể thấy rõ một điều: số đứng trước (nhỏ hơn) luôn luôn nhỏ hơn hoặc bằng căn bậc hai của số cần xét. Ví dụ ta thấy 20=4*5, rõ ràng 4 nhỏ hơn căn bậc hai của 20. Bạn tự xét các ví dụ khác nhé. Có thể chứng minh được điều này bằng toán học như sau:


Chứng minh: Gọi số cần xét là n, căn bậc hai của nó là x, hai ước tương ứng có tích bằng n của nó là a và b(a<>b), ta cần chứng minh a<x hoặc b<x. Vì a và b có vai trò tương đương, nên ta giả sử a<b.
Giả sử a>x và b>x, ta có a*b>x*x=n => trái với giải thiết. Vậy trong hai số a và b, phải có một số nhỏ hơn x. 
Dựa vào đặc điểm trên, ta sẽ giới hạn phạm vi của i là 2->n-1 thành 2->sqrt(n). Tuy nhiên, sqrt(n) với n không chính phương sẽ ra số vô tỉ, trong khi i là số nguyên, vậy cần làm tròn sqrt(n). Phạm vi mới sẽ là 2->trunc(sqrt(n)).

Thứ Năm, 23 tháng 2, 2012

In bảng cửu chương

Lập chương trình Pascal để in bảng cửu chương ra màn hình.

Uses crt;
Var
  a:array[1..9,1..9] of Integer ;
  i,j:byte ;
BEGIN
  Clrscr ;
  For i := 1 to 9 do
    For j := 1 to 9 do
      A[i,j] := i*j ;
  For i := 1 to 9 do
    Begin
      For j := 1 to 9 do Write(a[i,j]:5);
      Writeln ;
      Writeln ;
    End ;
  Readln ;
END.

Dãy số Fibonaci

In ra màn hình dãy số Fibonaci với n số nhập từ bàn phím. Biết dãy số Fibonaci là dãy số mà F(1)=0, F(2)=1, F(n)=F(n-1)+F(n-2).

uses crt;
var i,n,f1,f2: integer;
begin
 clrscr;
 write('Nhap n: ');
 readln(n);
 f1:=0;
 f2:=1;
 for i:=1 to n do
 begin
  write(f1,' ');
  f2:=f2+f1;
  f1:=f2-f1;
 end;
 readln;
end.

Phân loại lứa tuổi

Nhập họ tên và năm sinh của người và cho biết người này thuộc lứa tuổi nào: sơ sinh, nhi đồng, thiếu niên, thanh niên, trung niên, người lớn tuổi. Biết rằng:
+ Sơ sinh tuổi từ 0->0
+ Nhi đồng tuổi từ 2->9
+ Thiếu niên tuổi từ 10->15
+ Thanh niên tuổi 16->32
+ Trung niên tuổi từ 33 -> 50
+ Người già tuổi từ 50 trở lên


uses crt;var
a:array[1..100] of longint;
i,n:longint;
begin
clrscr;
write('nhap so nguoi:');
readln(n);
for i:=1 to n do
begin
write('nhap tuoi cua nguoi thu ',i,':');
readln(a[i]);
end;
for i:=1 to n do
begin
write('nguoi thu',i,':');
case a[i] of
0:writeln('tre so sinh');
2..9:writeln('nhi dong');
10..5:writeln('thieu nien');
16..32:writeln('thanh nien');
33..50:writeln('trung nien');
Else writeln('nguoi gia');
end;
end;
readln;
end. 

Phân loại lao động của công nhân

1 xí nghiệp tính tiền thưởng hàng tháng cho công nhân theo công thức: tiền thưởng bằng hệ số * 200, trong đó hệ số được tính dựa vào kết quả bình chọn phân loại a, b, c và nơi làm việc cơ sở 1 hay 2 của mỗi người trong tháng cụ thể trong bảng sau:
|Loại 1|___|CS1|___|CS2|
|A|_______|2.0|___ |2.5|
|B|_______|1.5|___ |1.8|
|C|_______|1.0|___ |1.0|
Viết chương trình nhập họ tên, phân loại lao động và nơi làm việc của công nhân. Tính tiền thưởng cho người đó.

var ten, cs: string;
  loai: char;
  i,n: integer;
  hs,tien: real;
begin
 write('Nhap so cong nhan: ');
 readln(n);
 for i:=1 to n do
 begin
  write('Nhap ten cong nhan thu ',i,': ');readln(ten);
  write('Nhap phan loai lao dong (a/b/c): ');readln(loai);
  write('Nhap noi lam viec (cs1/cs2): ');readln(cs);
  Case loai of
   'a' : if cs='cs1' then hs:=2.0
         else hs:=2.5;
   'b' : if cs='cs1' then hs:=1.5
         else hs:=1.8;
   'c' : hs:=1.0 ;
  end;
  tien:=hs*200;
  writeln('So tien thuong cua cong nhan ',ten,' la: ',tien:0:2);
 end;
 readln;
end.

Kiểm tra đồng thời tính chẵn lẽ của 2 số

Viết chương trình nhập 2 số tự nhiên M, N và thông báo đúng nếu M, N cùng tính chẵn lẻ, trong trường hợp ngược lại thì thông báo sai.

uses crt;
var n,m : integer;
begin
 clrscr;
 write('Nhap 2 so m, n: ') ; readln(m,n) ;
 if( (m+n) mod 2=0 ) then writeln('Dung !')
 else writeln('Sai !') ;
 readln;
end.

Bài toán gà chó

Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn. Hỏi có bảo nhiêu chó gà?


Bài giải

+ Gọi số gà là x ( Điều kiện x nguyên dương, x< 36)
Thì số chó là 36 - x

Số chân gà là 2x, số chân chó là 4 (36 - x)
Tổng số chân là 100 nên theo bài ra ta có phương trình:
2x + 4(36 - x ) = 100

+ Giải phương trình trên :
2x + 4( 36 - x) = 100
=> x = 22

Lập trình trong Pascal


uses crt;
var g,c: integer;
begin
 clrscr;
 for c:=1 to 25 do
 begin
  g:=36-c;
  if 4*c+2*g=100 then
   write('So ga: ',g,' So cho: ',c);
 end;
 readln;
end.

Nhập số thực hỏi phép tính

Viết chuơng trình nhập 2 số thực, sau đó hỏi phép tính cần thực hiện.


uses crt;
var a,b,kq: real;
pt: char;
begin
 clrscr;
 write('Nhap 2 so a, b: ');
 readln(a,b);
 writeln ('Nhap phep tinh can thuc hien: ');
 readln(pt);
 case pt of
   '+' : kq:=a+b;
   '-' : kq:=a-b;
   '*' : kq:=a*b;
   '/' : kq:=a/b;
 end;
 write('Ket qua: ',kq:0:2);
 readln ;
end.

Kiểm tra tam giác

Nhập 3 số thực, kiểm tra xem chúng có phải là độ dài của 3 cạnh tam giác không, nếu có thì nó là tam giác gì (tam giác cân, tam giác đều, tam giác vuông)?

uses crt;
var a,b,c: real;
begin
 clrscr;
 write('Nhap 3 so a, b, c: ');readln(a,b,c);
 if (a+b>c)and(a+c>b)and(b+c>a) then
 begin
  write('3 canh vua nhap la tam giac');
  if (a=b)or(b=c)or(a=c) then
  begin
   if(a=b)and(b=c) then
    write(' deu')
   else
    write(' can');
  end;
  if (a*a=b*b+c*c)or(b*b=a*a+c*c)or(c*c=a*a+b*b) then
   write(' vuong');
 end
 else
  write('3 canh vua nhap ko phai la tam giac');
 readln;
end.

Thứ Tư, 22 tháng 2, 2012

Sắp xếp mảng 1 chiều

Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo thứ tự tăng dần và in kết quả ra màn hình.

Ý tưởng:
Cho biến i chạy từ 1 đến N-1, đồng thời cho biến j chạy từ i+1 đến N: Nếu A[i]>A[j] thì đổi chổ A[i], A[j].

Dưới đây là thuật toán sắp xếp mảng 1 chiều:

Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,j,Tam:Integer;
Begin
{Nhập mảng}
Write('Nhap N='); Readln(N);
For i:=1 To N Do
Begin
Write('A[',i,']='); Readln(A[i]);
End;
{Sắp xếp}
For i:=1 To N-1 Do
For j:=i+1 To N Do
If A[i]>A[j] Then
Begin
Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam;
End;
{In kết quả ra màn hình}
Writeln('Ket qua sau khi sap xep:');
For i:=1 To N Do Write(A[i]:5);
Readln;
End.

Tìm giá trị lớn nhất mảng 1 chiều

Đề bài: Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử.

Ý tưởng:
- Cho số lớn nhất là số đầu tiên: Max:=a[1].
- Duyệt qua các phần tử a[i], với i chạy từ 2 tới N: Nếu a[i]>Max thì thay Max:=a[i];

Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,Max:Integer;
Begin
Write('Nhap N='); Readln(N);
For i:=1 To N Do
Begin
Write('A[',i,']='); Readln(A[i]);
End;
Max:=A[1];
For i:=2 To N Do
If Max<A[i] Then Max:=A[i];
Writeln('Phan tu lon nhat cua mang:', Max);
Readln;
End.

Thứ Năm, 16 tháng 2, 2012

Tính trung bình cộng các số dương, âm nhập vào từ mảng 1 chiều trong Pascal

Viết chương trình nhập số nguyên N (0 < N ≤ 10 000) và mảng a gồm N số nguyên. Tính và in ra trung bình cộng của các số âm, số dương trong a. Không tính số 0.

Ví dụ : a[] = {1, -6, 0, 3, -1}. Trung bình cộng là -0.75

PROGRAM tbc_am_duong_mang;
USES crt;
VAR a:ARRAY[1..100] OF REAL;
    i,n,x,y:INTEGER;
    tongam,tongduong,tba,tbd:REAL;
BEGIN
    clrscr;
    write('So phan tu cua day n= ');readln(n);
    FOR i:=1 TO n DO
        BEGIN
            write('Nhap phan tu a[',i,']: ');
            readln(a[i]);
        END;
   
    tongam:=0; x:=0;
    FOR i:=1 TO n DO
    IF a[i]<0 THEN
        BEGIN tongam:=tongam+a[i];
              x:=x+1;
        END;
    tba:=tongam/x;
    write('TB cong cac so am la: ',tba:5:1);
   
    writeln;
   
    tongduong:=0; y:=0;
    FOR i:=1 TO n DO
    IF a[i]>0 THEN
        BEGIN tongduong:=tongduong+a[i];
              y:=y+1;
        END;
    tbd:=tongduong/y;
    write('TB cong cac so duong la: ',tbd:5:1);
   
    readln;
END.  

Thứ Tư, 15 tháng 2, 2012

Giải phương trình bậc hai bằng Pascal

Ý tưởng: Để giải phương trình bậc 2 bằng Pascal, chúng ta sẽ tính del-ta như khi giải phương trình bậc 2 bình thường.

PROGRAM ptb2;
USES crt;
VAR a,b,c,x1,x2,d:REAL;
BEGIN
    clrscr;

    REPEAT
     write('Nhap cac he so a, b, c: ');
     readln(a,b,c);
    UNTIL a<>0;

    d:=sqr(b)-4*a*c;
   
    IF d<0 THEN write('Phuong trinh vo nghiem!')
    ELSE
    BEGIN
         x1:=(-b-sqrt(d))/(2*a);
         x2:=(-b+sqrt(d))/(2*a);
         IF d=0 THEN writeln('Phuong trinh co nghiem kep x = ',x1:5:1)
         ELSE writeln('Phuong trinh co 2 nghiem phan biet: ',x1:5:1,x2:5:1);
    END;

    readln;
END. 

Chủ Nhật, 12 tháng 2, 2012

Bài 4: Mảng trong Pascal

1. Mảng 1 chiều:

- Có thể hiểu nôm na: Mảng 1 chiều là dãy số hữu hạn.
vd: nhiệt độ mỗi ngày trong tuần (tháng/năm), cấp số cộng, cấp số nhân...

- Chỉ số của mảng:
vd: Xét mảng: 10 20 30 5 6 7
là một dãy các số tự nhiên bất kì có 6 phần tử mà
phần tử thứ 1 là 10
phần tử thứ 2 là 20
phần tử thứ 3 là 30
phần tử thứ 4 là 5
phần tử thứ 5 là 6
phần tử thứ 6 là 7


Lưu ý!
Xét dãy: Ti Suu Dan Mao Thin Ti Ngo Mui Than Dau Tuat Hoi
cũng được coi là mảng 1 chiều, trong đó:
  • Phần tử 1 là Ti
  • Phần tử 2 là Suu
  • Phần tử 3 là Dan
  • Phần tử 4 là Mao
  • Phần tử 5 là Thin
  • ...

- Cách tham chiếu đến mảng: A[i] với i là chỉ số phân tử trong mảng.
vd: Vẫn xét mảng 10 20 30 5 6 7
A[1]=10; A[2]=20; A[3]=30; A[4]=50; A[5]=6; A[7]=7

- Cách khai báo mảng: Có 2 cách khai báo:
  • Khai báo trực tiếp: Thường thì cách khai báo trực tiếp được dùng nhiều hơn vì nó ngắn gọn.

var <tên mảng>:array[kiểu chỉ số] of <kiểu phần tử>; 

vd:
a:array[1..100] of integer;
b,c:array[1..250] of integer;
  • Khai báo gián tiếp:
type <tên kiểu mảng>=array[kiểu phần tử] of <kiểu chỉ số>;
var <tên mảng>:<tên kiểu mảng>;

vd:
type mang=array[1..100] of integer;
var a,b,c:mang;

- Cách nhập/xuất mảng 1 chiều:
var a:array[1..100] of integer;
    n,i:integer; 
begin
    {Nhập số phần tử mảng}
     writeln('Nhap so phan tu cua mang:'); readln(n); 
    {Nhập mảng}
     for i:=1 to n do 
        begin
            write('A[',i,']='); readln(A[i]);
        end; 
    {Xuất mảng}
     for i:=1 to n do
        writeln(A[i]);
end.



2. Mảng 2 chiều:

- Khái niệm: Nếu mảng 1 chiều là dãy thì mảng 2 chiều là bảng các phần tử cùng kiểu (bảng các số).

- Tham chiếu: Vì mảng 2 chiều là bảng nên sẽ cần chỉ số hàng và chỉ số cột: A[i,j] với i là chỉ số hàng, j là chỉ số cột.

- Khai báo: Tương tự như mảng 1 chiều nhưng thêm chỉ số cột.

- Cách nhập/xuất mảng 2 chiều:
var A:array[1..50,1..50] of Integer;
      i,j,N,Max,k,c,M:Integer;
begin
     write('So hang cot:');readln(N,M);Max:=0;
     for i:=1 to N do
      for j:=1 to M do
       begin
            write('A[',i,',',j,']=');readln(A[i,j]);
       end;
     for i:=1 to N do
       begin
            for j:=1 to M do
            write(A[i,j]);
       end;
end.


Tổng hợp và biên tập

Thứ Năm, 9 tháng 2, 2012

Bài 3: Câu lệnh vòng lặp trong Pascal (for, while, repeat)

- Đánh răng mỗi ngày hai lần, học Tin học mỗi tuần 2 tiết, mỗi ngày tắm một lần...
- Học cho đến khi thuộc bài, rửa tách trà cho đến khi sạch...

Trong cuộc sống, những hành động trên được gọi là lặp đi lặp lặp lại nhiều. Trong Pascal, cách mô tả công việc (hoạt động) được lặp lại nhiều lần gọi là cấu trúc lặp. Có 3 loại cấu trúc vòng lặp như sau:

1. Vòng lặp for

- Đây là vòng lặp căn bản và được sử dụng nhiều nhất trong kiến thức phổ thông. Vòng lặp for dùng để lặp với số lần định trước, có cấu trúc như sau:

for <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;

Dạng khác (giảm dần biến đếm của vòng lặp for):

for <biến đếm>:= <giá trị cuối> downto 1 do <câu lệnh>;

vd: Tính tổng các số liên tiếp từ 1 đến 100

program Tinh_tong;
var i,S:integer;
begin   
    S:=0;
    for i:=1 to 100 do S:=S+1;
    write('Tổng là:',S);
    readln;
end.

2. Vòng lặp while

- Cú pháp:  

while <điều kiện> do <câu lệnh>

- Câu lệnh sẽ được lặp lại nhiều lần cho đến khi nào điều kiện còn đúng (nếu điều kiện sai thì các lệnh này sẽ không thực hiện nữa). Đối với lệnh này điều kiện sẽ được kiểm tra trước khi thực hiện lệnh nên nên điều kiện sai thì không có lệnh nào được thực hiện.

vd: Tính tổng các số liên tiếp từ 1 đến 100

var i: byte;
    S: longint;
begin
    S:= 0;
    i:= 1;
    while i <= 100 do
         begin
              S:= S + i;
              i:= i +1;
         end;
    write('Tong tu 1 den 100 la:',S);
    readln;
end.


3. Vòng lặp repeat 

- Cú pháp:

repeat
<câu lệnh>;
until <điều kiện>;

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

vd: Tính tổng các số liên tiếp từ 1 đến 100

var i,n: integer;
    S: real;
begin   
    S:=0; i:=1;
    repeat 
    S:=S+i; i:=i+1;
    until i>100;
    writeln('Tong = ',S);
    readln;
end.

Tổng hợp và biên tập

Bài 2: Câu lệnh điều kiện (If then)

Trong cuộc sống, có những hoạt động chỉ được thực hiện khi một điều kiện cụ thể được xảy ra. Điều kiện thường là một sự kiện được mô tả sau từ “Nếu”. Vd: Nếu em bị ốm, em sẽ không tập thể dục buổi sáng... Trong Pascal cũng như vậy.

Trước khi bắt đầu về câu lệnh điều kiện, chúng ta sẽ tìm hiểu tính đúng/sai, phép so sánh và cấu trục rẽ nhánh.

1. Tính đúng hoặc sai của các điều kiện

Khi kết quả kiểm tra là đúng, ta nói điều kiện được thỏa mãn, còn khi kết quả kiểm tra là sai, ta nói điều kiện không thỏa mãn.

vd: Nếu x mod 2=0, thì x là số chẵn; ngược lại x là số lẻ.
Nếu nhấn phím Enter, thì sẽ đưa con trỏ soạn thảo xuống dòng.

2. Điều kiện và phép so sánh

Các phép so sánh có vai trò rất quan trọng trong việc mô tả thuật toán và lập trình. Chúng thường được sử dụng để biểu diễn các điều kiện.
vd: Tìm số lớn nhất: Nếu a > b, thì a là số lớn nhất; ngược lại b là số lớn nhất.

3. Cấu trúc rẽ nhánh

Cấu trúc rẽ nhánh được sử dụng để chỉ thị cho máy tính thực hiện các hoạt động khác nhau tùy theo một điều kiện cụ thể có được thỏa mãn hay không. Cấu trúc rẽ nhánh có 2 dạng: Dạng thiếu và dạng đầy đủ. vd. Nếu chăm chỉ học tập, An sẽ được mẹ mua cho một cái máy vi tính; (dạng thiếu).
Nếu chăm chỉ học tập, An sẽ được mẹ mua cho một cái máy vi tính; ngược lại, An sẽ bị cô giáo phàn nàn và An sẽ không được mẹ mua cho một cái máy vi tính (dạng đủ).

4. Câu lệnh điều kiện

* Trong Pascal, câu lệnh điều kiện được viết như sau:

+ Dạng thiếu:

If <điều kiện> then <câu lệnh>;

vd: if (x mod 2)=0 then writeln(x,' la so chan');

+ Dạng đầy đủ:

If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;

vd:  if (x mod 2) =0 then writeln(x,' la so chan') 
   else writeln(x,' la so le');

Sưu tầm và biên tập

Thứ Hai, 6 tháng 2, 2012

Bài 1: Cấu trúc chương trình Pascal

Điều đầu tiên chúng ta quan tâm sẽ là cấu trúc của chương trình. Hầu như chương trình nào cũng đi theo quy tắc:
[<phần khai báo>]
<phần thân chương trình>
Trong đó phần khai báo có thể có hoặc không.
 Trước khi bắt đầu, chúng ta sẽ nhắc lại một số khái niệm cơ bản:



Có 2 loại chương trình, một là có chương trình con, 2 là không có chương trình con. Thực ra 2 loại này cũng tương tự như nhau.  Nhưng loại có chương trình con sẽ gọi

1. Chương trình không có chương trình con:

Dưới đây là cụ thể. Lời chú giải từng phần được đặt trong (*   *) hoặc { }

(* Phần khai báo dữ liệu *)
Program ...; {Khai báo tên chương trình. Tên chương trình được đặt theo quy tắc đặt tên. Đây là phần khai báo không bắt buộc}
Const …; {Khai báo hằng: Sử dụng cho những giá trị hằng số xuất hiện nhiều lần trong chương trình}
Users ...; {Khai báo thư viện: Cung cấp các chương trình có sẵn}
Var …; {Khai báo biến}
(* Thân chương trình chính *)
Begin
… {Các lệnh được viết ở đây}
End.

Ví dụ: Chương trình tính diện tích hình tròn:

Program Dien_tich_HT;
const pi=3.14;
uses crt;
var R,S: Integer;
begin
clrscr;
writeln('Nhập bán kính:');readln(r);
S:=R*R*pi;
write('Dien tich hinh tron la: ',S:8:3,'m2');
readln
end.
Chú ý:
- Lệnh clrscr; để xóa những gì đang có trên màn hình. Ở phần khai báo phải có uses crt; thì lệnh mới hoạt động.
- Ngoài những lệnh khai báo trên ta còn có label (khai báo nhãn)... Tuy nhiên 4 lệnh khai báo trên là sử dụng nhiều nhất.

2. Khai báo có chương trình con:

Chủ Nhật, 5 tháng 2, 2012

Tổng hợp các Giáo trình học Pascal

Pascal là kiến thức bắt buộc trong chương trình phổ thông và đại học. Tuy nhiên, nếu bạn chưa đến tuổi học Pascal nhưng lại muốn tìm hiểu, hay đơn giản là muốn mở rộng thêm kiến thức ngoài sách giáo khoa, hoặc muốn những dòng lý thuyết khô khan được trình bày sinh động, dễ hiểu nhất, thì những Giáo trình tự học Pascal sau đây chắc chắn giúp ích cho bạn.

CD-Room giáo trình Pascal toàn tập

1. CD-Room giáo trình Pascal toàn tập:

- Dung lượng: 308MB

Đây là 1 phần mềm - 1 sản phẩm của nhóm SSDG™ - Nhóm phát triển phần mềm sinh viên học sinh.

Chương trình có các phần thư giãn giải trí sau khi học là nghe nhạc hoặc chơi các game như xếp hình. Giáo trình có 2 dạng bài tập cơ bản và nâng cao để bạn tham khảo, nếu thích bạn vào để lấy bài tập mẫu đó ra X>SSDG>Thu vien (X là ổ đĩa khi cài SSDG Pascal).

- Phụ lục:
PHẦN 1 : LÝ THUYẾT
Chương 1 : Khái Niệm Ngôn Ngữ Lập Trình
Chương 2 : Thuật Toán
Chương 3 : Giới Thiệu Ngôn Ngữ Lập Trình Pascal
Chương 4 : Kiểu Dữ Liệu Trong Pascal
Chương 5 : Hằng – Biến – Biểu Thức
Chương 6 : Cấu Trúc Điều Khiển
Chương 7 : Cấu Trúc Điều Khiển (Tiếp Theo)
Chương 8 : Mảng
Chương 9 : Kiểu Chuỗi Ký Tự
Chương 10 : Hàm - Thủ Tục
Chương 11 : Tham Số Trị – Tham Số Biến
Chương 12 : Kiểu Bản Ghi Chương 1 : Kiểu Tập Hợp

PHẦN 2 : BÀI TẬP
Bài tập cơ bản
Bài tập nâng cao

PHẦN 3 : THƯ VIỆN
PHẦN 4 : THƯ GIÃN
- Download:

2. Pascal Study 1.00

- Dung lượng: 20MB

Pascal Study được viết nhằm mục đích giới thiệu cách viết chương trình bằng ngôn ngữ Pascal, giúp các bạn làm quen hoặc nâng cao kiến thức của mình về ngôn ngữ này. Phần mềm phục vụ cho các đối tượng là học sinh, sinh viên đang bắt đầu tiếp cận với lập trình máy tính. Phần mềm có nội dung dễ hiểu và rất rộng, chắc chắn sẽ đáp ứng được phần lớn nhu cầu của người sử dụng. Phần mềm có các phần như Lý thuyết và Bài tập, ngoài ra còn bổ sung thêm các phần mở rộng như Phụ lục và Ứng dụng - Trò chơi. Do đó, ngoài việc học lý thuyết cơ bản của Pascal, bạn còn được tiếp cận với các kỹ thuật nâng cao như đồ họa, viết game, viết ứng dụng... Nội dung của mỗi phần đều rất rộng. Phải thừa nhận phần nội dung chính là thế mạnh của phần mềm. Nội dung phần mềm được tổng hợp từ rất nhiều nguồn tài liệu. Pascal Study là phần mềm đầu tay của Nguyễn Anh Tú.

- Download:

3. EPascal - phần mềm hỗ trợ học Pascal tiếng việt

- Dung lượng: ~ 3MB

Phần mềm ePascal là một phần mềm do nhóm BK02 viết.

- Phần mềm gồm:
- 10 bài học lí thuyết (10 chương)
- 200 câu hỏi trắc nghiệm (10 chương)
- Hơn 100 bài tập (10 chương)
  • Giả lập môi trường Pascal
  • Làm bài tập theo các cấp độ khác nhau
  • Biên dịch và báo lỗi bằng tiếng Việt
  • Trợ giúp về chương trình, thủ tục hàm hoàn toàn bằng tiếng Việt
- Các trò chơi giải trí tăng cường kiến thức
  • Trắc nghiệm tổng hợp
  • Giải ô chữ
  • Chiếc nón kì diệu
- 10 chương trình mẫu kèm hướng dẫn chi tiết, source code đầy đủ
- 3 phần mềm mẫu viết bằng Pascal
- Từ điển về các hàm, thủ tục Pascal bằng tiếng Việt
- Ngoài ra còn có: Bộ sách em học Pascal, Trang web học Pascal, Bộ việt hóa Pascal.
- Download:

4. Giáo trình Pascal online:

Nếu bạn chỉ đơn thuần muốn tìm đọc lý thuyết về Pascal thì đây sẽ là lựa chọn hợp lý. Không cần phải download rắc rối mà các bạn có thể xem online tại đây.

Tổng hợp Biên tập

Chú thích!
Trên CodePascal.blogspot.com cũng sẽ cung cấp những kiến thức cơ bản về Pascal. Tuy nhiên chỉ là sự nhắc lại và đòi hỏi bạn (ít nhất) phải định hình được về Pascal. Bởi vậy bên cạnh những bài viết trên blog, CodePascal.blogspot.com cũng giới thiệu những giáo trình học Pascal trên đây. Để có được kiến thức chắc chắn nhất, bạn nên kết hợp cả giáo trình lẫn những bài viết trên CodePascal.blogspot.com.

Tuy nhiên, nếu bạn đã/đang học về Pascal thì có lẽ, chỉ cần những bài hướng dẫn trên CodePascal.blogspot.com là đủ.

Download TurboPascal 7.0 Full (Borland Pascal with Objects v7.0)

Turbo Pascal 7.0
Như đã giới thiệu ở bài viết trước, Pascal là ngôn ngữ lập trình cơ bản, là ngôn ngữ đại cương phổ biến nhất trong giảng dậy trên thế giới. Có rất nhiều phần mềm phục vụ lập trình Pascal. Trong đó nổi bật hơn cả là Turbo Pascal với phiên bản cuối cùng Borland Pascal with Objects v7.0. Bài viết sau sẽ giới thiệu Turbo Pascal và cung cấp link download.

Các phiên bản của Turbo Pascal:
  • Phiên bản 2.0: So với Pascal chuẩn, Turbo Pascal Version 2.0 có những mở rộng về các biến động, các biến địa chỉ tuyệt đối, Các phép toán trên bit và byte, các phép toán logic trên số nguyên, Kết nối các chương trình với các biến chung,...
  • Phiên bản 3.0: là một hệ thống phát triển gồm những đặc điểm của version 2.0 và có nhiều mở rộng quan trọng như: Bổ sung nhiề thủ tục và hàm chuẩn. Bổ sung một vài dạng đặc biệt mới cho phép tính toán các số thực với độ chính xác lớn,... So với version 2.0 thì version 3.0 có tốc độ dịch gấp đôi.
  • Phiên bản 4.0: có đặc điểm là có thêm một số dữ liệu mới, thực hiện các biểu thức logic nhanh hơn, có nhiều thủ tục và hàm chuẩn về xử lí đồ họa đồ thị màu sắc hình khối cửa sổ,...
  • Phiên bản 5.0 và 5.5: Năm 1989, hãng Borland đưa ra thị trường phiên bản Turbo Pascal Version 5.0 để giới thiệu các thủ tục và hàm tiện nghi. Tiếp đó chưa đầy nửa năm họ đưa ra version 5.5 có thêm cấu trúc hoàn toàn mới, đó là lập trình đối tượng.
  • Phiên bản 6.0: Đặc điểm nổi bậc của version này là giới thiệu thành phần của Turbo vision, một thư viện chương trình cụ thể, định hình có các cửa sổ tiện ích để đối chiếu với nhau.
  • Phiên bản 7.0: Cuối năm 1992, hãng Borland lại đưa ra version 7.0 để chạy trong nhiều hệ điều hành kể cả Windows.
Theo wikipedia

     - Dung lượng: ~ 1,8 MB.

    Download:
    - Link download của sources.ru (never die): Gồm 13 part, các bạn download và giải nén

    1 2 3 4 5 6 7 8 9 10 11 12 13

    - Link MF: Update sau...

    Pascal (ngôn ngữ lập trình)

    Blaise Pascal - Cha đẻ của Pascal
    Pascal là gì? Pascal là một ngôn ngữ lập trình do Niklaus Wirth, giáo sư điện toán trường đại học kỹ thuật Zurich đưa ra (năm 1970). Tên pascal được lấy theo tên nhà toán học, triết học nổi tiếng Blaise Pascal.

    - Đặc điểm: ngữ pháp đơn giản, cấu trúc ngữ nghĩa rõ ràng, dễ hiểu…

    - Thành tựu: Ban đầu Pascal được dùng trong giảng dạy lập trình có cấu trúc, là tiền đề cho nhiều thế hệ sinh viên vào nghề lập trình. Hiện nay, tuy không phổ biến bằng trước đây, nhưng Pascal vẫn là ngôn ngữ khá phổ biến trong giảng dạy và viết phần mềm (vd: HĐH Macintosh, hệ sắp chữ TeX...).

    Pascal là ngôn ngữ lập trình cơ bản, là kiến thức bắt buộc trong chương trình phổ thông và đại học ở Việt Nam cũng như một số nước trên thế giới.

    - Chương trình sử dụng: có nhiều chương trình dùng để lập trình Pascal như Borland Pascal, Free Pascal, Quick Pascal, UCSD Pascal… nhưng trong đó TURBO Pascal tỏ ra mạnh mẽ nhất. Các bạn có thể tải về tại đây.

    Tổng hợp & Lược bỏ

    Bài đăng phổ biến