< نظرة في البرمجيات المستقلة عن نظم التشغيل >
- مجموعة رائعة من برامج JavaScript الخدمية !
بسم الله الرحمن الرحيم
--------------
____________________________________________________________
___( ملحوظة : جميع الأكواد الموجودة في هذا الموضوع هي مـجـهــود شـخــصــي خــالـــص و لم تنقل من أي مكان أو منتدى آخر )___
____________________________________________________________
من مميزات البرمجة بلغتي JavaScript,Java أنهما platform-independent
لذلك فإذا كنت تريد برنامجا خدميا معينا يصل لأكبر عدد ممكن من المستخدمين فالتفكير المنطقي هو الآتي :
- استخدام لغة Java بكل ما فيها من قوة ..
لكن تعتبر قوتها مفرطة بالنسبة للبرامج التي تهدف أفكار برمجية ذهنية لا علاقة لها بالتعامل الفعلي مع الحاسب مثل :
( DB,System,API,OpenGl,Media,etc )
كما أن - للأسف - لا يوجد عند كل المستخدمين Java Virtual Machine
هذا بالإضافة إلى أنها من أصعب لغات البرمجة للمبتدئين ..
- فالحل إذا ما دام البرنامج يهدف فكرة برمجية خالصة و بعيدة عن التعامل الفعلي مع الحاسب فلا يوجد أفضل من لغة javascript
و هي بالطبع مدعمة من قبل العديد من المتصفحات و بمعنى أصح ( بلا وجع دماغ )
- و هذه البرامج تدعم الفكرة السابقة و أمثلة عليها :
========================================================
********************************************************
========================================================
هذا البرنامج هو عبارة عن برنامج يستفيد منه بالأخص دارسو علم الحاسب و طلبة أقسام هندسة الحاسبات
البرنامج باختصار يحول من نظام الأعداد العشري إلى أي نظام عددي آخر باستخدام مبادىء التحويل ( القسمة و باقي القسمة )
كما يظهر طريقة الحل .
و الكود هو :
<html>
<head>
<div align="center"><h3 style="color:navy">Decimal to any NumSys Converter</h3><h4 style="color:navy"><i>** Programmed By M.A.K. **</i></h4></div>
<script language="javascript">
<!--
var x="";
var calcswin;
//////////////////////////////////////////////////////
function mod(x,y)
{
return (x%y);
}
//////////////////////////////////////////////////////
function tosysno(x,y)
{
var reminder;
reminder=Math.round(mod(x,y));
if (reminder>9){reminder="["+reminder+"]";}
return reminder;
}
//////////////////////////////////////////////////////
function doAction()
{
x="<html><head></head><body><div align='center'><table cellspacing='3' cellpadding='3'><tr style='color:red; background-color:silver;'><td> Devide <td> By <td> Reminder ";
dec=document.all.frm.t;
sysno=document.all.frm.n;
sys=document.all.frm.s;
var originaldec=dec.value;
y=parseFloat(sys.value);
var num="";
while (dec.value>y)
{
x=x+"<tr align='center'><td>"+dec.value+"<td>"+y+"<td>"+Math.round(mod(dec.value,y));
num=tosysno(dec.value,y)+num;
dec.value=(dec.value-mod(dec.value,y))/y;
}
if (dec.value==y)
{
x=x+"<tr align='center'><td>"+dec.value+"<td>"+y+"<td>"+Math.round(mod(dec.value,y));
num="1"+tosysno(dec.value,y)+num;
x=x+"<tr align='center'><td>"+1+"<td>"+y+"<td>"+1;
x=x+"<tr align='center'><td>"+0;
}
else if (dec.value< y)
{
x=x+"<tr align='center'><td>"+dec.value+"<td>"+y+"<td>"+Math.round(mod(dec.value,y));
num=tosysno(dec.value,y)+num;
x=x+"<tr align='center'><td>"+0;
}
sysno.value=num;
dec.value=originaldec;
x=x+"<tr style='color:red; background-color:silver;'><td colspan='3' align='center'> Result <tr align='center'><td colspan='3' align='center'>"+num+'<br><br><hr><input type="button" value="Close" onclick="javascript:window.close();"> <input type="button" value="Print" onclick="javascript:window.print();"></table></form></body></html>';
calcswin=window.open("",null,"scrollbars=yes,width=250,height=250,top=250,left=300,,resizable=yes");
calcswin.document.write(x);
}
//////////////////////////////////////////////////////
//-->
</script>
</head>
<body>
<form name="frm" method="post">
<table>
<tr>
<td> Dec : <input type="text" name="t"> Sys : <input type="text" name="s"><br><br>
<tr>
<td align="center"><input type="button" name="btn" onclick='x="";doAction();' value="Decimal No. to Sys No."><br><br>
<tr>
<td> SysNum : <input type="text" name="n">
</table>
</form>
<br>
<h4>Accuracy = 99.99999999999999%</h4>
<h5>Error = +0.00000000000001%</h5>
</body>
</html>========================================================
********************************************************
========================================================
هذا البرنامج عبارة عن أداة كاملة للتحويل من و إلى أي نظام أعداد في الكون ! أيضا باستخدام مبادىء التحويل بين الأعداد ..
( أعرف أن بعض القراء سيطيرون فرحا لرؤيتهم هذا البرنامج ! )
يتطلب هذا البرنامج أن تكون على دراية بنظم الأعداد
و الكود هو :
<html>
<head>
<div align="center">
<h2>Numbers Systems Converter<h5> Programmed By M.A.K.</h5></h2>
<h3>Binary - Octal - Decimal - Hexadecimal - Any Sys</h3>
</div>
<hr>
<script language="javascript">
<!--
accuracy=1;
//////////////////////////////////////////////////////
function doActionToDec()
{
sysno=document.all._frm.txtfrm;
dec=document.all.calcsup;
sys=document.all._frm.hidfrm;
originalsysno=sysno.value;
var x=0;
var leftsin=0;
var rightsin=0;
for (var i=0;i<sysno.value.length;i++)
{
if (sysno.value.charAt(i)=='[')
{leftsin=leftsin+1;}
else if (sysno.value.charAt(i)==']')
{rightsin=rightsin+1;}
}
if (leftsin==rightsin)
{
var found=0;
var z="";
var z_="";
var zrole="";
var times=0;
var newnum="";
for(var i=0;i<sysno.value.length;i++) // retrievivg data from praces
{
if (found==1 && sysno.value.charAt(i)!=']')
{
z=z+sysno.value.charAt(i);
}
if (found==1 && sysno.value.charAt(i)==']')
{
found=0;
z_=z+","+z_;
z="";
}
if (sysno.value.charAt(i)=='[')
{
found=1;
}
}
z="";for (var i=0;i<z_.length-1;i++){z=z+z_.charAt(i);} // relative to upper for loop
found=0;
for(var i=0;i<sysno.value.length;i++) // preparing 4 knowing positions
{
if (sysno.value.charAt(i)!='[' && found==0)
{
newnum=newnum+sysno.value.charAt(i);
}
if (found==1 && sysno.value.charAt(i)==']')
{
found=0;
}
if (sysno.value.charAt(i)=='[')
{
found=1;
newnum=newnum+"x";
}
}
sysno.value=newnum; // relative to upper for loop
times=0;
for(var i=0;i<sysno.value.length;i++) //knowing positions
{
if (times==1)
{
if (sysno.value.charAt(sysno.value.length-i-1)=='x')
{
zrole=zrole+","+i;
}
}
else
{
if (sysno.value.charAt(sysno.value.length-i-1)=='x')
{
zrole=i;
times=1;
}
}
}
newnum="";
for(var i=0;i<sysno.value.length;i++) // modified num
{
if (sysno.value.charAt(i)=='x')
{
newnum=newnum+"0";
}
else
{
newnum=newnum+sysno.value.charAt(i);
}
}
sysno.value=newnum; // relative to upper for loop
for(var i=0;i<sysno.value.length;i++)
{
x=x+todec(i)*Math.pow(sys.value,sysno.value.length-i-1);
}
dec.value=x; // relative to upper for loop
var inprc="";
var prcpos="";
var w1=0;
var w2=0;
var res=0;
for ( var i=0; i<leftsin;i++)
{
for (w1; w1<z.length;w1++)
{
if ( z.charAt(w1)!=',')
{
inprc=inprc+z.charAt(w1);
}
else {w1=w1+1;break;}
}
inprc=parseFloat(inprc);
for (w2; w2<zrole.length;w2++)
{
if ( zrole.charAt(w2)!=',')
{
prcpos=prcpos+zrole.charAt(w2);
}
else {w2=w2+1;break;}
}
prcpos=parseFloat(prcpos);
if (leftsin==1){prcpos=0;}
res=res+inprc*Math.pow(sys.value,prcpos);
inprc="";
prcpos="";
}
dec.value=parseFloat(dec.value)+parseFloat(res);
sysno.value=originalsysno;
if (accuracy==1 && parseInt(document.all.calcsup.value)>9999999999999998)
{alert('Operation Canceled :\nEntered value of selected system is more than\n9999999999999998 in Dec\n to allow this conversion any way uncheck accuracy option');}
else{doActionFrmDec();}
}
else {window.alert('Input Error');}
}
//*********************************************//
function todec(x)
{
return parseFloat(sysno.value.charAt(x));
}
//////////////////////////////////////////////////////
function doActionFrmDec()
{
dec=document.all.calcsup;
sysno=document.all._frm.txtto;
sys=document.all._frm.hidto;
var originaldec=dec.value;
y=parseFloat(sys.value);
var num="";
while (dec.value>y)
{
num=tosysno(dec.value,y)+num;
dec.value=(dec.value-mod(dec.value,y))/y;
}
if (dec.value==y)
{
num="1"+tosysno(dec.value,y)+num;
}
else if (dec.value< y)
{
num=tosysno(dec.value,y)+num;
}
sysno.value=num;
dec.value=originaldec;
}
//*********************************************//
function mod(x,y)
{
return (x%y);
}
//*********************************************//
function tosysno(x,y)
{
var reminder;
reminder=Math.round(mod(x,y));
if (reminder>9){reminder="["+reminder+"]";}
return reminder;
}
//////////////////////////////////////////////////////
//-->
</script>
</head>
<body>
<div align="center">
<form name="_frm" method="post">
<table border="1" align="center" cellpadding="3" cellspacing="2">
<tr>
<th> From
<th> To
<td rowspan="3"><input type="button" value="Convert" onclick="doActionToDec()">
<tr>
<td>
<select onchange="javascript:
if (this.value==0)
{
x=prompt('Enter System Identifier','');
if (parseInt(x)>1 || x==null)
{document.all._frm.hidfrm.value=x;}
else if (x==null){}
else
{alert('There is No Such System !');}
}
else
{document.all._frm.hidfrm.value=this.value;}
">
<option value="null">- - - - - - - -
<option name="frmbin" value="2">Binary
<option name="frmoct" value="8">Octal
<option name="frmdec" value="10">Decimal
<option name="frmhex" value="16">Hexadecimal
<option name="frmany" value="0">Any-sys
</select>
<input type="text" name="hidfrm" value="null" size="5" disabled>
<td>
<select onchange="javascript:
if (this.value==0)
{
x=prompt('Enter System Identifier','');
if (parseInt(x)>1 || x==null)
{document.all._frm.hidto.value=x;}
else if (x==null){}
else
{alert('There is No Such System !');}
}
else
{document.all._frm.hidto.value=this.value;}
">
<option value="null">- - - - - - - -
<option name="tobin" value="2">Binary
<option name="tooct" value="8">Octal
<option name="todec" value="10">Decimal
<option name="tohex" value="16">Hexadecimal
<option name="frmany" value="0">Any-sys
</select>
<input type="text" name="hidto" value="null" size="5" disabled>
<tr>
<td><input type="text" name="txtfrm">
<td><input type="text" name="txtto">
<tr>
<td colspan="3" rowspan="2">
<input type="checkbox" name="chkbx" checked onclick="javascript:
if (!this.checked)
{accuracy=0;alert('Accuracy is now ignored for values\nequivalent to more than 999999999999998 Dec');}
else
{accuracy=1;alert('Accuracy Enabled');}
">
Enable Full Accuracy [ 100% ]<br>
<div align="center">
UP to equivalent value for 9999999999999998<sub>Dec</sub>
<h5>
unchecking this option allows you to enter<br>
a value equivalent to more than<br>
9999999999999998<sub>Dec</sub><br>
but with an Error of +0.00000000000001%
</h5>
</div>
</table>
</form>
</div>
<input name="calcsup" type="hidden">
</body>
</html>========================================================
********************************************************
========================================================
أما هذا البرنامج كنت قد نشرته من قبل في المنتدى .
و هو عبارة عن برنامج تحويل للألوان من نظام HEX إلى RGB و العكس .
و الكود هو :
<html>
<head>
<div align="center">
<h2>Color Converter</h2><h3>A JavaScript Code Programmed By M.A.K.</h3>
</div>
<hr>
<script language="javascript">
<!--
///////////////////////////////////////////////////////////////////////
function hexconverter(num)
{
orgnum=num;
var hexno="";
while (num>16)
{
hexno=tohex(num/16)+hexno;
num=(num-mod_16(num/16))/16;
}
if (num==16)
{
hexno="1"+tohex(num/16)+hexno;
}
else if (num< 16)
{
hexno=tohex(num/16)+hexno;
}
if (orgnum<16){hexno="0"+hexno;}
return hexno;
}
//******************************************************//
function mod_16(x)
{
while (x>1 || x==1)
{
x=x-1;
}
x=x*16;
return x;
}
function tohex(x)
{
var hexchange;
hexchange=mod_16(x);
if (hexchange==10){hexchange="A";}
else if (hexchange==11){hexchange="B";}
else if (hexchange==12){hexchange="C";}
else if (hexchange==13){hexchange="D";}
else if (hexchange==14){hexchange="E";}
else if (hexchange==15){hexchange="F";}
return hexchange;
}
//******************************************************//
//////////////////////////////////////////////////////////////////////
function conv_RGB_H()
{
xr=document.all.frmrgb.r;
xg=document.all.frmrgb.g;
xb=document.all.frmrgb.b;
xh=document.all.frmh.h;
xh.value="#"+hexconverter(xr.value)+hexconverter(xg.value)+hexconverter(xb.value);
var xscolor=document.getElementById("scolor");
xscolor.bgColor=xh.value;
}
//////////////////////////////////////////////////////////////////////
function conv_H_RGB()
{
xr=document.all.frmrgb.r;
xg=document.all.frmrgb.g;
xb=document.all.frmrgb.b;
xh=document.all.frmh.h;
xr.value=todec(1)*16+todec(2);
xg.value=todec(3)*16+todec(4);
xb.value=todec(5)*16+todec(6);
var xscolor=document.getElementById("scolor");
xscolor.bgColor=xh.value;
}
//******************************************************//
function todec(x)
{
if (xh.value.charAt(x)=='A' || xh.value.charAt(x)=='a'){return 10;}
else if (xh.value.charAt(x)=='B' || xh.value.charAt(x)=='b'){return 11;}
else if (xh.value.charAt(x)=='C' || xh.value.charAt(x)=='c'){return 12;}
else if (xh.value.charAt(x)=='D' || xh.value.charAt(x)=='d'){return 13;}
else if (xh.value.charAt(x)=='E' || xh.value.charAt(x)=='e'){return 14;}
else if (xh.value.charAt(x)=='F' || xh.value.charAt(x)=='f'){return 15;}
else {return parseFloat(xh.value.charAt(x));}
}
//////////////////////////////////////////////////////////////////////
//-->
</script>
</head>
<body>
<table align="center" width="80%" border="1" cellpadding="10px" cellspacing="10px" frame="below">
<tr>
<td align="center">
<h3><i>Enter RGB :</i></h3>
<form name="frmrgb" method="post">
<table border="1">
<tr><td> R
<td><input type="text" name="r" value="0" size="20" maxlength="3"
onblur="javascript:
tst=document.all.frmrgb.r.value;
if(-1<tst && tst<256)
{}
else
{
window.alert('Enter a valid value for R ( 0 - 255)');
focus(document.all.frmrgb.r);
}"/>
<tr><td> G
<td><input type="text" name="g" value="0" size="20" maxlength="3"
onblur="javascript:
tst=document.all.frmrgb.g.value;
if(-1<tst && tst<256)
{}
else
{
window.alert('Enter a valid value for G ( 0 - 255)');
focus(document.all.frmrgb.g);
}"/>
<tr><td> B
<td><input type="text" name="b" value="0" size="20" maxlength="3"
onblur="javascript:
tst=document.all.frmrgb.b.value;
if(-1<tst && tst<256)
{}
else
{
window.alert('Enter a valid value for B ( 0 - 255)');
focus(document.all.frmrgb.B);
}"/>
<tr><td colspan="2"><input type="button" name="okrgb" value="Convert to Hex" onclick="conv_RGB_H()"/>
</table>
</form>
<td align="center">
<h3><i>Enter Hex Value :</i></h3>
<form name="frmh" method="post">
<table border="1">
<tr><td> Hex Value
<td><input type="text" name="h" value="#000000" size="20" maxlength="7"
onblur="javascript:
tst=document.all.frmh.h.value;
if(tst.length<7)
{
window.alert('Enter a valid hexadecimal color');
focus(document.all.frmh.h);
}
else if(tst.charAt(0)!='#')
{
window.alert('Enter the pond # sign');
focus(document.all.frmh.h);
}
else if(tst.length==7 && tst.charAt(0)=='#')
{
for (i=1;i<8;i++)
{
if (tst.charAt(i)!=0 && tst.charAt(i)!='1' &&
tst.charAt(i)!='2' && tst.charAt(i)!='3' &&
tst.charAt(i)!='4' && tst.charAt(i)!='5' &&
tst.charAt(i)!='6' && tst.charAt(i)!='7' &&
tst.charAt(i)!='8' && tst.charAt(i)!='9' &&
tst.charAt(i)!='A' && tst.charAt(i)!='B' &&
tst.charAt(i)!='C' && tst.charAt(i)!='D' &&
tst.charAt(i)!='E' && tst.charAt(i)!='F' &&
tst.charAt(i)!='a' && tst.charAt(i)!='b' &&
tst.charAt(i)!='c' && tst.charAt(i)!='d' &&
tst.charAt(i)!='e' && tst.charAt(i)!='f')
{
window.alert('Enter a valid hexdecimal number\n\n(0,1,2,3,4,5,6,7,8,9,a[A],b,c[C],d[D],e[E],f[F])');
focus(document.all.frmh.h);
break;
}
}
}
"/>
<tr><td colspan="2"><input type="button" name="okh" value="Convert to RGB" onclick="conv_H_RGB()"/>
</table>
</form>
<tr>
<td id="scolor" colspan="2" align="center" bgcolor="#000000">
</table>
</body>
</html>========================================================
********************************************************
========================================================
و يلاحظ في البرامج السابقة أنها تعتمد على فكر برمجي خالص .
و بذلك فإن هذا المنهج البرمجي بكونه مرنا حسب إحتياجات المستخدم يعتبر من أفضل المناهج لفئة الدارسين و الباحثين .
أرجو أن أكون قد أوضحت الفكرة و أن تنال البرامج إعجابكم
بانتظار الآراء ...
