Breaking

Wednesday, April 10, 2013

Một số bài tập javaScript cơ bản

Bài tập javaScript cơ bản đơn giản

Một vài bài tập cơ bản đơn giản dành cho những bạn bắt đầu vọc javaScript. Bạn có thể dùng những trang tương tự như jsbin.com để gõ code cho nhanh sau đó đối chiếu với các demo dưới đây. Nếu bạn có cách giải quyết hay hơn hay thắc mắc gì, xin vui lòng comment mọi ý kiến.


  Mô tả  
  Một số bài javaScript cơ bản cho người mới học  
?

<script language="javascript">
function ham1(form) // nếu chỉ viết ham() hoặc ham(form)
{
alert(n1.value); // kiểu này thì ko có tên form, ko có reset
alert("Nữa nè "+n1.value);
}

function ham2(form)
{
alert(thao.n2.value);
alert("Nữa nè "+thao.n2.value);
}

function ham3(form)
{
document.write("bạn viết <b>"+form3.nhap.value+"</b> xong rồi!")
}
function ham4(form)
{
form4.kq4.value=form4.n4.value; // nhận giá trị trực tiếp
}

function ham5(form)
{
tg=eval(form5.n5.value) // eval chỉ nhập số thôi
form5.kq5.value=tg;
}

function ham6(form)
{
tg=form6.n6.value
form6.kq6.value=tg; // nhận qua trung gian
}

function ham7(form)
{
form7.kq7.value=eval(form7.n7.value) // nhận trực tiếp số
}

function ham8() // chỉ viết "form" hoặc ko viết gì cả
{
alert(form8.n8.value);
alert("Nữa nè "+form8.n8.value); // <b> ơ đây ko có tác dụng trang trí
form8.kq8.value=form8.n8.value; // viết là "form" hoặc "tên_form" cũng được
form7.kq7.value=form8.n8.value
}

function ham9(form)
{
n9= prompt("câu hỏi ?");
form9.kq9.value=n9 // ko viết được "tên_form.tên_thẻ.value"

// các cách viết đều được:
// form9.kq9.value=prompt("câu hỏi ?");
// n9= form9.kq9.value=prompt("câu hỏi ?"); // n9 viết trước prompt là được
}
function ham10() // chỉ viết "form" hoặc ko viết gì cả
{
n10= form10.kq10.value = prompt("câu hỏi ?");
alert("Nữa nè "+n10);
form10.kq10.value=n10;
confirm("Hỏi tý coi "+n10+" đucọc ko?");

}
function ham11(form)
{
n11=eval(prompt("câu hỏi ?"));
form11.kq11.value=n11; // ko viết được "tên_form.tên_thẻ.value"
}
</script>
</script>
< !-------------------------------------------------------------->

<h3>khai bao 1 </h3>
<input type="text" name="n1" >
<input type="button" value="Tính" onClick="ham1(form)">
<h3>khai bao 2 </h3>

<form name="thao" method="post">
<input type="text" name="n2" >
<input type="button" value="Tính" onClick="ham2(form)">
<input type="reset" value="Nhập lại">
</form>

<h3>khai báo 3</h3>
<form name="form3" method="post">
<input type="text" name="nhap" >
<input type="button" value="Tính" onClick="ham3(form)">
<input type="reset" value="Nhập lại">
</form>

<h3>khai báo 4 (lấy trực tiếp)</h3>
<form name="form4" method="post">
<input type="text" name="n4" >
<input type="button" value="Tính" onClick="ham4(form)">
<input type="reset" value="Nhập lại"><br>
<input type="text" name="kq4">
</form>

<h3>khai báo 5: chỉ nhập số, lấy gián tiếp</h3>
<form name="form5" method="post">
<input type="text" name="n5" >
<input type="button" value="Tính" onClick="ham5(form)">
<input type="reset" value="Nhập lại"><br>
<input type="text" name="kq5">
</form>

<h3>khai báo 6: lấy qua biến trung gian</h3>
<form name="form6" method="post">
<input type="text" name="n6" >
<input type="button" value="Tính" onClick="ham6(form)">
<input type="reset" value="Nhập lại"><br>
<input type="text" name="kq6">
</form>

<h3>khai báo 7: chỉ nhập số, trực tiếp</h3>
<form name="form7" method="post">
<input type="text" name="n7" >
<input type="button" value="Tính" onClick="ham7(form)">
<input type="reset" value="Nhập lại"><br>
<input type="text" name="kq7">
</form>

<h3>khai báo 8: tên formp, khi nhập lại con trỏ chuột chạy về ô nhập</h3>
<form name="form8" method="post">
<input type="text" name="n8" >
<input type="button" value="Tính" onClick="ham8()">
<input type="reset" value="Nhập lại" onClick="n8.focus()"><br>
<input type="text" name="kq8">
</form>

<h3>khai báo 9: hỏi bằng hộp thoại</h3>
<form name="form9" method="post">
<input type="text" name="kq9">
<input type="button" value="Tính" onClick="ham9()">
</form>

<h3>khai báo 10: hỏi bằng hộp thoại Yes/No</h3>
<form name="form10" method="post">
<input type="text" name="kq10">
<input type="button" value="Tính" onClick="ham10(form)">
</form>

<h3>khai báo 11: hỏi bằng hộp thoại chỉ nhận số </h3>
<form name="form11" method="post">
<input type="text" name="kq11">
<input type="button" value="Tính" onClick="ham11(form)">
</form>

Demo một vài kiểu khai báo và hiển thị đơn giản trong javascript ...
?
Xem ví dụ

<script language="javascript">
function kt(x)
{
var kt=false;
f1=1; f2=1;f=1;
while (f<x)
{
f1=f2;
f2=f;
f=f1+f2;
}
if (f==x) kt=true;
else kt=false;
return kt;
}

// kiểm tra 1 số
function ktfib()
{
n=eval(fib1.n.value);
if (kt(n)==true) fib1.kq.value= n+" Là số fibonaci";
else fib1.kq.value= n+" ko Là số fibonaci";
}
// liệt kê nhiều số
function lkfib()
{
n=eval(fib.n.value);
var st=" ";
for (var i=1;i<=n;i++)
if (kt(i))
st=st+i+" ";
fib.kq.value=st;
}

</script>

<h3>Kiểm tra 1 số fibonaci:</h3>

<form name="fib1" method="post">
<input type="text" name="n"> <br>
<input type="text" name="kq" readonly> <br>
<input type="button" value="Đánh giá" onclick="ktfib()">
<input type="reset" value="Làm tiếp" onClick="n.focus()">
</form>

<h3>Liệt kê số fibonaci nho hon số muốn nhập:</h3>

<form name="fib" method="post">
<input type="text" name="n"> <br>
<textarea name="kq" cols="50" rows="5" wrap="hard" readonly></textarea> <br>
<input type="button" value="Liệt Kê" onclick="lkfib()">
<input type="reset" value="Làm tiếp" onClick="n.focus()">
</form>

Xem Kết quả

Kiểm tra 1 số fibonaci:



Liệt kê số fibonaci nho hon số muốn nhập:



Kiểm tra 1 số fibonaci. Liệt kê các số fibonaci nhỏ hơn một số vừa nhập.  
?
Xem ví dụ

<script language="javascript">
function kt(x)
{
var kt=false;
var s=0;
for (var i=1; i<=(x/2); i++)
if (x % i ==0) s=s+i;
if (s == x) kt=true;
else kt=false;
return kt;
}

function kthh()
{
n=eval(hh1.n.value);
if (kt(n)==true) hh1.kq.value=n+" là số hoàn hảo";
else hh1.kq.value=n+" ko là số hoàn hảo";
}

function lkhh()
{
n=eval(hh.n.value);
var st=" ";
for (var i=1; i<=n; i++)
if (kt(i)==true) st=st+i+" ";
hh.kq.value=st;
}

</script>

<h3>Kiểm tra 1 số hoàn hảo</h3>

<form name="hh1" method="post">
<input type="text" name="n" size="50" maxlength="25" title="nhap so vao day"> <br>
<input type="text" name="kq" size="50" readonly> <br>
<input type="button" value="Kiểm tra" onclick="kthh()">
<input type="reset" value="Làm tiếp" onclick="n.focus()">
</form>

<h3>liệt kê các số hoàn hảo</h3>
<form name="hh" method="post">
<input type="text" name="n" size="50" maxlength="7"> <br>
<textarea name="kq" cols="50" rows="5" wrap="hard" readonly> </textarea> <br>
<input type="button" value="Liệt kê" onclick="lkhh()">
<input type="reset" value="Làm tiếp" onclick="n.focus()">
</form>

Xem Kết quả

Kiểm tra 1 số hoàn hảo



liệt kê các số hoàn hảo



Kiểm tra 1 số hoàn hảo, Liệt kê các số hoàn hảo nhỏ hơn một số vừa nhập  
?
Xem ví dụ

<h3 title="bendoi.vn">Kiểm tra 1 số nguyên tố</h3>

<form name="fnt" method="post">
<input type="text" name="n" size="30" maxlength="5"/> <br>
<input type="text" name="kq" size="30" readonly/> <br>
<input type="button" name="tinh" value=" Kiểm tra " onclick="nt()">
<input type="reset" value=" Làm lại " onclick="n.focus()">
</form>

<h3 title="bendoi.vn">Hiển thị các số nguyên tố nhỏ số muốn nhập</h3>
<form name="nto" method="post">
<input type="text" name="n" size="30" maxlength="5"/> <br>
<textarea name="kq" cols="30" rows="5" wrap="hard" readonly/> Ket qua </textarea> <br>
<input type="button" name="tinh" value=" Kiểm tra " onclick="lknt()">
<input type="reset" value=" Làm lại " onclick="n.focus()">
</form>

<!------------------------------------------------------>
<script language="javascript">
function kt(x)
{
var kt=false;
var d=0;
if (x<2)
kt=false;
else
{
for (var i=2;i<=(x/2);i++) if (x % i == 0) d=d+1;
if (d==0) kt=true;
else kt=false;
}
return kt;
}
function nt()
{
n=eval(fnt.n.value);
if (kt(n)==true)
fnt.kq.value=n+" La so nguuen to";
else
fnt.kq.value=n+" ko La so nguuen to";

}

// liet ke:
function lknt()
{
n=eval(nto.n.value);
var st=" ";
for (var i=1; i<=n;i++)
if (kt(i)==true)
st=st+i+" ";
nto.kq.value=st;
}
</script>

Xem Kết quả

Kiểm tra 1 số nguyên tố



Hiển thị các số nguyên tố nhỏ số muốn nhập



Kiểm tra 1 số nguyên tố, Liệt kê các số nguyên tố nhỏ hơn một số vừa nhập  
?
Xem ví dụ

<script LANGUAGE="JavaScript">
function cong(form)
{
a=eval(form.a.value) ;
b=eval(form.b.value) ;
c=a+b ;
form.kq.value = c ;
}

function tru(form)
{
a=eval(form.a.value)
b=eval(form.b.value)
c=a-b
form.kq.value=c
}

function nhan(form)
{
a=eval(form.a.value)
b=eval(form.b.value)
c=a*b
form.kq.value=c
}

function chia(form)
{
a=eval(form.a.value)
b=eval(form.b.value)
c=a/b
form.kq.value = c
}

function mu(form)
{
a=eval(form.a.value)
b=eval(form.b.value)
c=Math.pow(a, b)
form.kq.value = c
}

</script>

<h3>Phép tính có dùng javacript</h3>
<form>
<input type="text" size="15" name="a">
<input type="button" value=" + " onClick="cong(form)">
<input type="button" value=" - " onClick="tru(this.form)">
<input type="button" value=" x " onClick="nhan(this.form)">
<input type="button" value=" / " onClick="chia(this.form)">
<input type="button" value=" ^ " onClick="mu(this.form)">
<input type="text" size="15" name="b"> =
<input type="text" value="0" name="kq" size="9">
</form>

Xem Kết quả

Phép tính có dùng javacript

=
Thực hiện phép tính + - x / ^ giữa 2 số (dùng hàm javascript)  
?
Xem ví dụ

<h3>Phép tính trực tiếp (không dùng hàm javacript)</h3>
<form method="post" name="tinh">
<input type="text" name="a" size="15" maxlength="10" />
<input type="button" name="cong" value=" + " onclick="kq.value=parseFloat(a.value) + parseFloat(b.value)" />
<input type="button" name="tru" value=" - " onclick="kq.value=parseFloat(a.value) - parseFloat(b.value)" />
<input type="button" name="nhan" value=" X " onclick="kq.value=parseFloat(a.value) * parseFloat(b.value)" />
<input type="button" name="chia" value=" / " onclick="kq.value=parseFloat(a.value) / parseFloat(b.value)" />
<input type="button" name="mu" value=" ^ " onclick="kq.value=Math.pow(parseFloat(a.value),parseFloat(b.value))" />

<input type="text" name="b" size="15" maxlength="10" />
=
<input type="text" name="kq" size="15" />
<input type="reset" value="Làm tiếp" />
</form>

Xem Kết quả

Phép tính trực tiếp (không dùng hàm javacript)

=
Thực hiện phép tính + - x / ^ giữa 2 số (không dùng hàm javascript, tính trực tiếp)  
?

<script language="JavaScript">

var SoLuong, x;
var DS = new Array(100); // Khai báo mảng DS, có thể lưu tối đa là 100 phẩn tử
SoLuong = prompt("Bạn cần nhập bao nhiêu người : ", 5);
for (i=0; i < SoLuong; i++)
{
DS[i] = prompt("Nhập vào họ tên : ","");
}

// Gọi hàm sort của đối tượng mảng DS để sắp xếp
DS.sort();

//Hiển thị kết quả sau khi sắp (sort)
document.write("<h1>Danh sách đã sắp xếp là </h1>");

for (x in DS) /* Nên sử dụng cấu trúc for … in này để duyệt mảng */
{
document.write( DS[x] );
document.write("<BR>"); // Xuống dòng
}

</script>

Nhập và hiển thị danh sách trực tiếp với Prompt và document.write  
?
Xem ví dụ


<h3>Nhập 2 số để tính ước chung lớn nhất & bội chung nhỏ nhất </h3>

<form name="fucbc" method="post">
Số a:
<input type="text" name="a" size="15" maxlength=10> <br>
Số b:
<input type="text" name="b" size="15" maxlength=10> <br>
kết quả:
<textarea name="kq" rows=2 cols=30 wrap=hard></textarea> <br>
<input type="button" name="tinh" value=" Tính " onclick="ucbc()">
<input type="reset" value=" làm tiếp " onclick="a.focus()">
</form>

<script language="javascript">
function ucbc()
{
a=eval(fucbc.a.value);
b=eval(fucbc.b.value);
k=a*b;
while (a!=b)
{
if (a>b)
{a=a-b;}
else
{b=b-a;}
}
fucbc.kq.value="Ước chung lớn nhất: "+a+"\nBội chung nhỏ nhất: "+k/a;
}
// \n là xuống dòng, ngoài ra: \r,...
</script>

Xem Kết quả

Nhập 2 số để tính ước chung lớn nhất & bội chung nhỏ nhất

Số a:
Số b:
kết quả:
Nhập 2 số để tính ước chung lớn nhất & bội chung nhỏ nhất  
?
Xem ví dụ

<h3>Giải phương trình bậc 2</h3>

<form name="pt" method="post">
<input type="text" name="a"> X<sup>2</sup> +
<input type="text" name="b"> X +
<input type="text" name="c"> = 0 <br>
<textarea name="kq" cols="70" rows="3" wrap="hard" readonly onclick="this.select();"></textarea><br>
<input type="button" value=" Giải " onclick="ptb2()">
<input type="reset" value=" Làm tiếp " onclick="a.focus()">
</form>

<script language="javascript">
function ptb2()
{
a=eval(pt.a.value);
b=eval(pt.b.value);
c=eval(pt.c.value);

if (a==0)
{
if (b==0)
{
if (c==0)
{document.pt.kq.value=" Phương trình vô sô nghiệm";}
else
{document.pt.kq.value=" Phương trình vô sô nghiệm";}
}
else
{document.pt.kq.value=" Phương trình bậc 1 có nghiệm "+(-c/b);}
}
else
{
d=b*b-4*a*c;
if (d<0)
{document.pt.kq.value=" Phương trình bậc 2 Vo nghiem";}
if (d==0)
{document.pt.kq.value=" Phương trình bậc 2 có 1 nghiệm kép "+(-b/(2*a));}
if (d>0)
{
x1=(-b+Math.sqrt(d,2))/(2*a);
x2=(-b-Math.sqrt(d,2))/(2*a);
document.pt.kq.value=" Phương trình bậc 2 có 2 nghiệm: \n x1= "+x1+"\n x2= "+x2;
}
}
}
</script>

Xem Kết quả

Giải phương trình bậc 2

X2 + X + = 0

Giải phương trình bậc 2  
  Bài tập về mãng đơn giản  
?
Xem ví dụ
<script language="javascript">
function mangprompt(mangpromptt)
{
var st=" ";
var n;
var a= new Array(20);

n=prompt("so phan tu:",5);
for (i=1; i<=n; i++)
{
a[i]=prompt(" Phần tử thứ "+i+" là: ","");
st=st+a[i]+" ";
}
alert("Bạn đã nhập:\n"+st);

}
</script>
<form name="mangpromptt" methor="post">
<input type="submit" value="xem nào!" onclick="mangprompt(mangpromptt)"/> &LT;/form>
Xem Kết quả
Nhập mãng bằng PROMPT và hiển thị mảng bằng ALERT  
?

<script language="JavaScript">

var SoLuong, x;
var DS = new Array(100); // Khai báo mảng DS, có thể lưu tối đa là 100 phẩn tử
SoLuong = prompt("Bạn cần nhập bao nhiêu người : ", 5);
for (i=0; i < SoLuong; i++)
{
DS[i] = prompt("Nhập vào họ tên : ","");
}

// Gọi hàm sort của đối tượng mảng DS để sắp xếp
DS.sort();

//Hiển thị kết quả sau khi sắp (sort)
document.write("<h1>Danh sách đã sắp xếp là </h1>");

for (x in DS) /* Nên sử dụng cấu trúc for … in này để duyệt mảng */
{
document.write( DS[x] );
document.write("<BR>"); // Xuống dòng
}

</script>

Nhập và hiển thị danh sách trực tiếp với Prompt và document.write  
?
Xem ví dụ

<script language="javascript">

function thuchien()
{
st=" ";
var n;
var a= new Array(20);

n=eval(prompt("so phan tu (1..20): ",""));
if ((n<1) || (n>20)) thao.kq.value=n+"khong hop le \n can nhap so phan tu trong khoang tu 1 den 20 thoi nhe!";
else
{

for (var i=1; i<=n; i++)
{
a[i]=eval(prompt(" Phần tử thứ "+i+"/"+n+" là: ",""));
st=st+a[i]+" ";
}

// phần tử âm
ta=0;sa=" ";
for (var i=1; i<=n; i++)
if (a[i]<0)
{
ta=ta+a[i];
sa=sa+a[i]+" ";
}

// phần tử dương
td=0;sd=" ";
for (var i=1; i<=n; i++)
if (a[i]>0)
{
td=td+a[i];
sd=sd+a[i]+" ";
}

// max
sl=a[1];il=1;
for (var i=2; i<=n; i++)
if (sl<a[i])
{
sl=a[i];
il=i;
}
// if (il==0) il=1; else il=i;

// min
sb=a[1];ib=1;
for (var i=2; i<=n; i++)
if (sb>a[i])
{
sb=a[i];
ib=i;
}
// if (ib==0) ib=1; else ib=i;
// hiển thị
thao.kq.value=" Số phần tử: "+n+
"\n Các phần tử trong mảng: "+st+
"\n Các sô âm: "+sa+
"\n Tổng các số âm: "+ta+
"\n các số dương: "+sd+
"\n tổng số dương: "+td+
"\n số lớn nhất: "+sl+
"\n vị trí số lớn nhất: "+il+
"\n số nhỏ nhất: "+sb+
"\n vị trí số nhỏ nhất: "+ib;
}
}
</script>

<center>
<form name="thao" method="post">

<input type="button" value="Thực hiện Bài tập mảng đơn giản" onclick="thuchien()">

<textarea name="kq" cols="50" rows="10" wrap="hard" readonly onclick="this.select()">ket qua</textarea>
</form>
</center>

Xem Kết quả

Nhập mãng bằng Prompt, liệt kê, tính tổng Các sô âm dương, số lớn nhất, vị trí số lớn nhất, số nhỏ nhất, vị trí số nhỏ nhất.  
     
     

No comments:

Post a Comment