Hướng dẫn học thủ ngữ khi tiếp xúc với người khiếm thính
Hướng dẫn làm đậu phộng rang muối đơn giản dễ làm
Hướng dẫn trồng hoa địa lan không khó
Hướng dẫn lập trình Pascal - Từ cơ bản tới nâng cao
Ở bài đầu này chúng ta sẽ làm quen với công cụ để lập trình Pascal và làm 1 bài lập trình nhỏ.
Công cụ sử dụng ở đây là Turbo Pascal 7.0 các bạn có thể tải về theo link ở dưới, cài đặt sau đó vào thư mục .TurboPascal-7.0\BIN chạy file (click đúp) TPX có hình chữ MS DOS viết cách điệu (thực ra ở đây có 3 file TPX thì 2 file là có thể xài được chỉ có 1 file là cái icon là nhấn vào ra cái ảnh nhỏ thôi )
Màn hình sau hiện ra
Sử dụng như sau:
- Kiểm tra lỗi: F9
- Chạy chương trình Ctrl+F9
- Lưu lại chương trình F2
- Mở chương trình đã có F3
- Thoát khỏi Turbo Pascal Alt + X
Hoặc có thể sử dụng Menu ở trên chỉ cần bạn biết chút tiếng Anh.
Chương trình đầu tiên:
Phân tích chương trình:Code:Program Hello; var x,y:integer; begin write('Chao mung cac ban den voi dien dan truong thptnamly'); readln; end.
Một chương trình bao gồm 3 phần:
Phần 1: Tiêu đề
Program Hello;
Với Program là từ khóa còn Hello là tên chương trình
Phần 2: Khai báo
var bien: kieu_bien
Khai báo tất cả biến dùng trong chương trình // Phần này sau sẽ nói rõ hơn
Phần 3: Thân chương trình
Nằm trong cụm “begin … end.”
Chú ý sau end phải có dấu “.”
Sau mỗi lệnh phải có dấu “;” // Phần này sau sẽ nói rõ hơn
Với ví dụ trên nhấn F9 nếu báo không có lỗi thì nhấn Ctrl+F9 màn hình đen ngòm sẽ hiện ra với dòng chữ Chao mung cac ban den voi dien dan truong thptnamly
Tải về bộ cài Pascal: www.brothersoft.com/turbo-pas…ad-272943.html
Program square; var x:real; {x la 1 bien thuc} begin write(‘Nhap vao so thuc x= ‘);{Yeu cau nhap so} read(x); write(‘Binh phuong cua so do la: ‘);{in ra binh phuong cua so do} write(‘x*x:5:0′) end.
PROGRAM Hinh_chu_nhat; Var a, b, S, P : Real ; Begin Write( ‘Nhap chieu dai : ‘); Readln(a); Write( ‘Nhap chieu rong : ‘); Readln(b); S:=a*b; P:=2* (a+b); Writeln (‘ Dien tich = ‘, S:8:2); Writeln (‘ Chu vi = ‘, P:8:2); Readln; End.
Program Phuong_trinh_bac_2; var a, b, c, x1, x2, delta : real; begin Write(‘Chuong trinh giai phuong trinh bac hai’); Write(‘a = ‘); Readln(a); Write(‘b = ‘); Readln(b); Write(‘c = ‘); Readln(c); delta := b * b – 4 * a * c; if delta < 0 then begin Write(‘Phuong trinh vo nghiem’); end; if delta = 0 then begin Write(‘Phuong trinh co nghiem kep: x1 = x2 = ‘, -b/(2 * a)); end; if delta > 0 then begin x1 := (-b – SQRT(delta))/(2 * a); x2 := (-b + SQRT(delta))/(2 * a); Writeln(‘Phuong trinh co nghiem kep:’) Writeln(‘x1 = ‘, x1); Writeln(‘x2 = ‘, x2); end; end.
Program Hoc_Luc; var d:integer; begin; write(‘Nhap diem cua hoc sinh d=’); readln(d); case d of 0,1,2,3,4: write(‘Hoc luc yeu’); 5,6:write(‘Hoc luc trung binh’); 7,8:write(‘Hoc luc kha’); 9,10:write(‘Hoc luc gioi’); end; readln; end.
for bien_dem:=gia_tri_dau to gia_tri_cuoi do (sử dụng khi biến đếm tăng dần, còn khi biến đếm giảm dần dùng downto thay cho do)
Program Tong; var s,i,n:integer; begin; write(‘Nhap vao so luong so nguyen n:=’); readln(n); s=0; for i:=1 to n do s=s+i; writeln(‘Tong can tinh la ‘,s:100); readln; end.
Program Trau_co; var td,tn:integer; begin for td:=1 to 20 do for tn:=1 to 33 do if (5*tn + 3*tn + (100-5*td-3*tn)/3=100) then begin; writeln(‘So trau dung’,td:2); writeln(‘So trau nam’,tn:2); write(‘So trau gia’,100-td-tn); end; readln; end.
Lênh lặp While…do
Lệnh này sử dụng khi ta biết trước điều kiện để dừng vòng lặp và có thể chưa biết rõ số lượng phần tử lặpCông thức
Khi dieu_kien là đúng thì vòng lặp thực hiện tiếpCode:while (dieu_kien) do begin; lenh; lenh; …………… end;
Nếu dieu_kien sai thì vòng lặp dừng lại
Ví dụ 1:
Tính S=1+1/2=1/3+1/4+…
Dừng khi 2-S<0.01
Từ bài này sẽ không đưa code đầy đủ mà chỉ viết code cho phần chính chương trình, các bạn tự thêm các phần như mở đầu Program… , khai báo var và phần kết thúc readln;end. vào nhé
Ví dụ 2:Code:s=0; i=1; while 2-s<0.01 do begin s:=s+1/i; i:=i+1; end;
Tìm ước chung lớn nhất của (a,b)
Nhập m,n (tự viết)
Ví dụ 3:Code:while m<>n do if m>n them m:=m-n else m<n then n=n-m; write(‘UCLN cua 2 so la ‘,m);
Kiểm tra số n là số nguyên tố
Code:Program So_nguyen_to; var integer:n,i; begin; write(‘Nhap vao 1 so’); readln(n); i=2; while (n mod i <>0) i++; if i>sqrt(n) then write(‘So nguyen to’) else write(‘Khong la so nguyen to’); readln; end.
Repeat…until
Công thức:
Code:Repeat lệnh_1; lệnh_2; ……………. until (dk_thoat)
- Nếu dk_thoat là sai thì lặp, sai thì thoát khỏi vòng lặp: thực hiện lệnh rồi mới kiểm tra điều kiện Ví dụ 1:
Nhập 1 số bất kỳ, nếu là số âm thì nhập tiếp cho tới khi số nhập vào là số dương
Ví dụ 2:Code:Repeat write(‘Vao 1 so bat ky’,n); readln(n); if (n<0) then write(‘Yeu cau ban nhap lai’); until n>0;
Tính 1 + 1/2 + 1/3 + … + 1/n
Code:write(‘Nhap n=’,n); readln(n); s:=0; i:=1; repeat s:=s+1/i; i:=i+1; until i>n;
Để kết thúc cho các bài viết về vòng lặp xin có mấy lời gọi là phụ họa thêm để mọi người dễ nhớ về 3 vòng lặp này.
Nếu như coi 1 chương trình máy tính là cuộc đời thì với vòng for mọi người sẽ xuất phát đồng hàng, ai cũng như ai và người ta không thể biết được phía trước mình có những gì, cứ vào vòng for là tiến, những ai không đạt đủ các điều kiện – các lệnh if (nếu có) thì sẽ bị loại dần và rất có thể những con người qua được vòng for này sẽ được tôi luyện rất nhiều và trở nên đứng đắn hơn. Với for bạn có thể biết được chắc chắn có bao nhiêu người cùng đua tranh với mình nhưng lại không rõ đối thủ mạnh yếu ra sao chỉ khi cuộc đua tranh bắt đầu thì mọi việc mới dần ngã ngũ.
Còn với while thì sao, có ít nhất là 1 tiêu chí đặt ra để bạn có thể vào vòng lặp này, nó có thể coi như là mức sàn, mức tối thiểu để bạn đi tiếp trên con đường của mình. Cũng nhờ đó mà bạn thấy được chút ít về các người bạn đồng hành của mình, ít ra thì họ cũng đạt được cái điều kiện tối thiểu nào đó. Với while có thể số lượng là không định trước được, người ta cứ lần lượt xếp hàng để được kiểm tra xem có đạt cái điều kiện tối thiểu không và ai đạt tức thì họ được đi tiếp và những người sau họ cũng phải dừng lại theo họ.
Repeat..until thì sao, tương tự như for bạn sẽ xuất phát mà không có 1 tiêu chí gì ngăn cản cả, cứ đi đi mãi, và số lượng bạn đồng hành cũng có thể là khó đoán trước được. Nhưng cái hàng dài có thể là vô tận này có thể bị chặn đứng ngay lập tức nếu nó gặp điều kiện trong until cũng vì thế mà người ta không rõ khi nào thì ta bị loại và có khi là đi hết tới cuối con đường mới biết được thì ra mình vẫn thiếu 1 cái gì đó để có thể đi tiếp.
Máy tính có thể khô khan nhưng khi lồng các hoạt động của máy tính vào cuộc đời thì nó cũng mang nhiều ý nghĩa…..
ten_mang:array[chi_so] of kieu_phan_tu
a:array[1..n] of real;
type: thu=(Hai,Ba,Bon,Nam,Sau,Bay,Chunhat); Tuan:array[thu] of boolean;
program tim_max; const n=10;{gán cố định số phần tử của mảng là 10, cái này có thể cho là 1 biến để nhập vào} var a:array[1..n] of real; max:real; i:integer; begin writeln(‘Nhap cac phan tu cua mang’); for i:=1 to n do begin; write(‘Nhap a[',i,']:=’ ); readln(a[i]); end; max:=a[1]; for i:=2 to n do {do da gan max:=a[1] nen khong can xet phan tu thu 1 nua} if (max<a[i]) then max:=a[i]; write(‘Gia tri lon nhat cua mang la ‘, max:5:3); readln; end.
for i:=1 to n-1 do {đi qua lần lượt từng phần tử của dãy} begin for j:=i+1 to n do if a[i]>a[j] then {so sánh với các phần tử khác trong dãy có vị trí sau nó cho đến cuối dãy nếu nó lớn hơn thì đổi chỗ} begin t:=a[i]; a[i]=a[j]; a[j]:=t; end; end; writeln(‘Day so da sap xep’); for i:=1 to n do writeln(a[i]);
s:=0; j:=0; for i:=1 to n do if a[i]>0 then begin s:=s+a; j:=j+1; end; writeln(‘Day co ‘,j,’ so duong’); writeln(‘Trung binh cong cua cac phan tu duong la ‘,s/j:2:4);
var a:array [1..m,1..n] of real;
program vd_mang_2chieu; var a:array[1..100,1..100] of integer; i,j: integer; begin write(‘Nhap cac kich thuoc cho mang m,n:=’); readln(m,n); write(‘Nhap cac phan tu cua mang’); for i:=1 to m do for j:=1 to n do begin write(‘a[',i,j,']:=’); readln(a[i,j]); end; writeln(‘Mảng mới nhập vào’); for i:=1 to m do begin for j:=1 to n do write(a[i,j]); writeln; end; readln; end.
Procedure Giaithua(n:word):integer; begin if n=0 then giaithua:=1 else giaithua:=n*giaithua(n-1); end;
Program Fibonacci; Uses CRT; Var n,i:shortint; F:real; CH:char; Label 1; Procedure FB(n:shortint); Var a,b:Real; Begin If (n=1) or (n=2) Then F:=1 Else Begin FB(n-1); a:=F; FB(n-2); b:=F; F:=a+b; End; End; Begin 1: ClrScr; Write(‘N = ‘);Readln(n); If n>40 Then Begin Writeln(‘n phai nho hon hoac bang 40′); Writeln; GOTO 1; End; Writeln; For i:=1 to n Do Begin FB(i); Write(F:0:0,’ ‘); End; Writeln;Writeln; Các thuật toán về số
1. THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ: Thuật toán của ta dựa trên ý tưởng: +Nếu n >1 không chia hết cho số nguyên nào trong tất cả các số từ 2 đến sqr(n) thì n là số nguyên tố. Do đó ta sẽ kiểm tra tất cả các số nguyên từ 2 đến trunc(sqrt(n)), nếu n không chia hết cho số nào trong đó thì n là số nguyên tố. +Nếu thấy biểu thức trunc(sqrt(n)) khó viết thì ta có thể kiểm tra từ 2 đến (n div 2). Hàm kiểm tra nguyên tố nhận vào một số nguyên n và trả lại kết quả là true (đúng) nếu n là nguyên tố và trả lại false (sai) nếu n không là số nguyên tố.
function ngto(n:integer): boolean; var i:integer; begin ngto:=false; if n<2 then exit; for i:=2 to trunc(sqrt(n))do if n mod i=0 then exit; ngto:=true; end;
function tongcs(n:integer): integer; var s : integer; begin s := 0; while (n <> 0) do begin s := s + n mod 10; n := n div 10; end; tongcs := s; end;
function UCLN(a,b: integer): integer; var r : integer; begin while (b<>0) do begin r := a mod b; a := b; b := r; end; UCLN := a; end;
function tongus(n : integer): integer; var i,s : integer; begin s := 0; for i := 1 to n div 2 do if n mod i = 0 then s := s + i; tongus := s; end;
eval(p,outN, 0); eval(q, outN, 0); for i:= 0 to outNdo r[i]:= p[i]*q[i]; eval(r,outN, 0); for i:=1 to N do begin t:= r[i]; r[i]:= r[outN+1]; r[outN+1-i]:= t; end; for i:=0 to outN do r[i]:=r[i]/(outN+1);
procedure eval(var p: poly; N, k: integer); var i, j: integer; begin if N=1 then begin t:=p[k]; p1:= p[k+1]; p[k]:= t+p1; p[k+1]:= t-p1; end else begin for i:= 0 to N div 2 do begin j:= k+2*i; t[i]:= p[j]; t[t+1+N div 2]: = p[j] +1; end; fori:= 0 to N do p[k+i]:= t[i]; eval(p,N div 2, k); eval(p, N div 2, k +1 +N div 2); j:= (outN +1) div (N+1); for i:= 0 to N div 2 do begin t:= w[i*j]*p[k+(N div 2)+ 1 +i]; t[i]:= p[k+i]+t; t[i+ N div 2) +1]:= p[k+i]*t end; for i:=0 to N do p[k+i]:= t[i] end; end;