نمایش نتایج 1 تا 14 از 14

نام تاپیک: کمک برای نوشتن ماشین حساب

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #11

    نقل قول: کمک برای نوشتن ماشین حساب

    فکر می کنم kassit خودش اون کد رو نوشته باشه .
    واسه همین با اجازه خودش من همون کد رو کامل تر کردمو یه دستی هم به ظاهرش
    کشیدم . بقیه اش با خودت . بچه های دیگه هم می تونن این کد رو تغییر بدن و کامل ترش کنن .

    1-من واقعا وقت واسه اینکه کد رو کامل آزمایش کنم ندارم پس لطفا خودت زحمت آزمایش کردنو بکش اگر مشکلی بود یا تغییری لازم داشت بگو تا درستش کنم .

    2-ولی منطق یا الگوی برنامه نویسی مفهوم اونجوری که تو می خوای نداره . چرا ؟
    مثلا اگر به 10 نفر بگیم یک برنامه ساده بنویسید که از 1 تا 10 بشمره و رو صفحه نشون بده
    هر کدوم از این 10 نفر ممکنه همین برنامه ساده رو یک جور بنویسه .

    مثلا الان که می خوام کد رو اینجا قرار بدم واسه آخرین بار که نگاه کردم در همین کد currentVal
    رو در واقع 2 بار می گیرم که از نظر الگوی برنامه نویسی درست نیست . یا خودت درستش کن
    یا بعدا خودم فرصت کردم درستش می کنم .







    <html>
    <head>

    <style type="text/css">

    input.test {position:relative;width:38px;height:22px;}
    input.test2 {position:relative;width:28px;height:22px;margin-top:2px;}
    input.test3 {position:relative;width:80px;height:22px;}
    input.test4 {position:relative;width:155px;height:22px;margin-top:2px;}

    </style>

    <script language="javascript">

    var action;
    var preValue;
    var NewAction;
    Clearing = "ON";
    function LogAction(act) {

    if (Clearing == "ON") {
    document.form1.txt1.value = "";
    Clearing = "OFF";
    }
    document.form1.txt1.value += act

    }

    function compute(action) {

    var currentVal = Number(document.form1.txt1.value);
    switch (NewAction) {
    case 'add':
    currentVal = preValue + currentVal;
    break;
    case 'deduce':
    currentVal = preValue - currentVal;
    break;
    case 'multiple':
    currentVal = preValue * currentVal;
    break;
    case 'divide':
    currentVal = preValue / currentVal;
    break;
    default:
    break;
    }

    preValue = currentVal
    NewAction = action
    Clearing = "ON"
    document.form1.txt1.value = currentVal
    }

    </script>
    </head>
    <body>
    <table border=1 align=center style="width:200px;height:200px;">
    <tr><td align=center>
    <form name="form1"><br />
    <input Type="text" name="txt1" value="0" size="18" style="text-align:right;font-weight:bold;"><br /><br />
    <input class="test" Type="button" name="btn1" value="1" onclick="LogAction(1);">
    <input class="test" Type="button" name="btn2" value="2" onclick="LogAction(2);">
    <input class="test" Type="button" name="btn3" value="3" onclick="LogAction(3);">
    <input class="test2" Type="button" name="btn+" value=" + " onclick="compute('add');"><br>
    <input class="test" Type="button" name="btn4" value="4" onclick="LogAction(4);">
    <input class="test" Type="button" name="btn4" value="5" onclick="LogAction(5);">
    <input class="test" Type="button" name="btn6" value="6" onclick="LogAction(6);">
    <input class="test2" Type="button" name="btn-" value=" - " onclick="compute('deduce');"><br>
    <input class="test" Type="button" name="btn7" value="7" onclick="LogAction(7);">
    <input class="test" Type="button" name="btn8" value="8" onclick="LogAction(8);">
    <input class="test" Type="button" name="btn9" value="9" onclick="LogAction(9);">
    <input class="test2" Type="button" name="btnX" value=" * " onclick="compute('multiple');"><br>
    <input class="test3" Type="button" name="btn=" value=" = " onclick="compute();">
    <input class="test" Type="button" name="btn0" value=" 0 " onclick="LogAction(0);">
    <input class="test2" Type="button" name="btn/" value=" / " onclick="compute('divide');"><br>
    <input class="test4" Type="reset" name="btnC" value=" c " onclick="Clearing='ON';NewAction='';"><br>
    </form>
    </td>
    </tr>
    </table>
    </body>
    </html>



    توضیح:

    وقتی رو اعداد ( input button ) کلیک میکنی یک پرش داریم به LogAction Function
    که اینجا اعداد در input txt1 نوشته می شه .

    ولی Clearing چیه ؟ برای پاک کردن input txt1 هست هر وقت لازم باشه صفحه پاک بشه
    برابر با ON و هر وقت لازم نباشه OFF . این فقط برای وقتییه که میخوایم عدد دوم رو وارد کنیم
    یا اولین بار عدد و وارد کنیم تا 0 پاک بشه
    ================================================== ==
    برای اجرای عملیات ریاضی احتیاج به 2 تا عدد و علامتها داریم .
    مثلا اگر با این مثال بخوایم نشون بدیم برنامه چجوری کار می کنه . 1+2=3

    در این برنامه هر بار که روی علایم کلیک می کنیم یعنی اینا (+ - / * = ) یک پرش
    به compute انجام میشه

    دفعه اول که به compute پرش می کنیم عدد اول یعنی 1 و علامت یعنی + گرفته میشه
    ولی هیچ عمل ریاضی انجام نمیشه .

    برنامه منتظر می مونه تا عدد دوم وارد بشه و دوباره روی یکی از (+ - / * ) یا = کلیک کنه
    تا عملیات قبلی اجرا بشه .

    واقعا توضیح دادن سخته .
    ================================================== =
    باز 1+2=3 رو در نظر بگیر .

    کسی که از ماشین حساب استفاده می کنه رو 1 کلیک میکنه . 1 در input txt1 نوشته
    میشه.

    حالا رو + کلیک می کنه . برنامه به compute پرش میکنه action برابر با add میشه
    یعنی جمع و currentVal عدد 1 رو میکیره .

    در خطهای بعدی ( دفعه اول ) هیچ عملیات ریاضی انجام نمی شه چون برای switch
    متغیر NewAction رو قرار دادیم که فعلا خالییه پس هیچ عملیاتی انجام نمیشه

    در آخر preValue برابر با currentVal میشه یعنی 1 در اصل عدد اول ما همین currentVal
    هست و NewAction هم برابر با action میشه یعنی add در اصل NewAction عملیات + رو مشخص می کنه


    حالا عدد 3 وارد میشه و وقتی روی (+ - / * ) یا = کلیک بشه تازه عملیات جمع انجام میشه
    فرض کن *

    از اینجا به بعد هم که معلومه

    برنامه دوباره به compute پرش می کنه action برابر با multiple یا ضرب میشه این عملیات بعدییه .

    currentVal برابر با 3 میشه قبلا preValue برابر با 1 بود و NewAction برابر بود با add
    برای همین وقتی به case 'add' میرسه 3 با 1 جمع میشه .

    ================================================== ===

    اگر از همه اینا چیزی نگرفتی

    اینو گوش کن .. شما 1 رو می گیری + رو می گیری 2 رو هم می گیری بعد 1+2=3

    در حالی که اینجا 1 رو می گیری + رو می گیری ولی هیچ عملیاتی انجام نمی دی
    بعد که 2 وارد شد کسی که از ماشین حساب استفاده می کنه هیچ راهی نداره
    جز اینکه رو (+ - / * ) یا = کلیک کنه مثلا * اینجاست که عدد دوم گرفته میشه و عمل +
    انجام میشه 1+2=3 حالا عمل بعدی ما * هست دوباره برنامه منتظر می شه
    تا عدد دوم برای ضرب وارد و روی (+ - / * ) یا = کلیک بشه ....

    ================================================== ====

    حالا فهمیدم چرا کسی توضیح نمی ده چون 1 ساعت وقت می گیره بدیش اینه که کسی هم چیزی دستگیرش
    نمی شه

    ================================================== ====
    آخرین ویرایش به وسیله Ali100 : دوشنبه 18 آذر 1387 در 02:24 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •