2. Murakkab matematik ifodalarni hisoblash 2.1. Hisoblash algoritmi Keyingi formada biz Excel yordamida murakkab matematik ifodalarni (formulalarni) hisoblashning quyi tizimini ishlab chiqamiz. Visual C# formulalarni to'g'ridan-to'g'ri hisoblash usullarini o'z ichiga olmaydi (yuqorida tavsiflangan usul bo'yicha dastur kodini yozmasdan). Ikkala ish stoli kalkulyatorida ham, operatsion tizim kalkulyatorida ham bunday imkoniyat yo'q.
Excelda bunday imkoniyat mavjud va hisob-kitoblar ikkita usul yordamida amalga oshiriladi: Baholash va hisoblash. Baholash usuli formulani baholaydi va natijani qaytaradi va hisoblash usuli barcha ochiq jadvallarni qayta hisoblab chiqadi. Baholash va hisoblash usullari yordamida biz hisob-kitoblarning variantlarini doimiy ravishda ishlab chiqamiz.
Baholash usuli yordamida formulani hisoblash algoritmi quyidagicha:
1. Visual C # loyihasini yarating va yuqorida aytib o'tilganidek, Excel 11.0 Obyektlar kutubxonasiga ma'lumotnoma (Project, Add Reference) qo'shing.
2. Obyekt o'zgaruvchisini nom bilan e'lon qilamiz, masalan Exce1.Application () obyektlar kutubxonasidan ObjectExcel:
Exce1.Application ObjectExcel = New Exce1.ApplicationClass ();
3. Biz Formula umumiy obyekt o'zgaruvchisini e'lon qilamiz va unga matematik ifodani (formulani) yozamiz:
Object Formula;
va natijani hisoblash natijasini chiqarish uchun umumiy obyekt o'zgaruvchisi Result:
Object Result;
4. Formulani to'g'ridan-to'g'ri kodga matn qatori sifatida yozishingiz mumkin. Ammo formulani kodga emas, balki formadagi oynada (formulani ushbu oynadan keyingi o'qish bilan) formada yozish qulayroq va bu shakl ikki shaklda yaratilishi mumkin.
Birinchi variantga ko'ra biz allaqachon mavjud bo'lgan (Visual C # loyihasida) Form3dan foydalanamiz, unga TextBox1 oynasini (yuqorida tavsiflangan odatiy sxema bo'yicha) joylashtiramiz.
Formulani TextBox1 oynasiga yozganimizdan so'ng, ushbu xususiyatni TextBox1 oynasidan Text xususiyati yordamida o'qiymiz va Formula umumiy obyekt o'zgaruvchisiga beramiz:
Formula = TextBox1.Text
Ikkinchi variantga ko'ra biz Form3ga kiramiz, masalan tugmachani (siz kalitni yoki boshqa boshqaruvni kiritishingiz mumkin) va ushbu tugmachaning bosilishini qayta ishlash jarayonida biz kutubxona (tayyor) panelini chaqiramiz Visual C # formatidagi InputBox oynas (formulani yozish uchun).
5. ObjectExcel obyekti o'zgaruvchisi va "_Evaluate" usuli yordamida matematik ifodani hisoblang va qaytarilgan natijani Result o'zgaruvchisiga qo'ying:
Result=objectExcel.Evaluate(Formula);
Siz formulani (masalan, ikkita murakkab sonni qo'shish uchun: 1,1 + 2,2) to'g'ridan-to'g'ri kodda "_Evaluate" uslubining argumenti sifatida yozishingiz mumkin:
Result=ObjectExcel._Evaluate(“1.1+2.2”);
6. Biz natijani monitor ekranida yuqoridagi ikkita variantdan biriga ko'ra ko'rsatamiz.
Birinchi varnantga ko'ra biz hisoblangan Natija qiymatini ko'rsatamiz, masalan, Form3 shaklidagi textBox2 oynasida (boshqa boshqaruv elementida):
TextBox2.Text=Result.ToString();
Ikkinchi variantga ko'ra biz Visual C # kompleksining MsgBox usuli yordamida kutubxona (tayyor) panelida hisoblangan Natija qiymatini ko'rsatamiz.
7. Ushbu algoritmning so'nggi nuqtasi objectExcel obyekti o'zgaruvchisini o'chirish va Quit () usuli yordamida unga ajratilgan xotirani bo'shatishdir. Dastur shunday qiladi:
ObjectExcel.Quit();
Biz odatdagi formulalarni hisoblash algoritmini ishlab chiqishni tugatdik.
Excel stolidagi f(x) belgisini (Funksiyani qo'shish) tugmachasini bosgan bo'lsangiz, formulalarga yozishimiz mumkin bo'lgan matematik va boshqa funktsiyalar ro'yxatini ko'rishingiz mumkin bo'lgan Insert Function paneli paydo bo'ladi. Ushbu funktsiyalarni Excel yordamida topishimiz mumkin. Eslatib o'tamiz, ushbu formulalar nomlari formulada inglizcha katta va kichik harflar bilan yozilishi mumkin.
Endi biz ushbu algoritmning birinchi variantini (yangi Form3 dan foydalangan holda) dasturiy ta'minotga o'tkazamiz. Eslatib o'tamiz, tayyor panellardan foydalangan holda masalani yechish algoritmining InputBox va MsgBox usullari bilan chaqirilgan va shuning uchun ularni qayta tiklashga hojat bo'lmagan ikkinchi versiyasi mavjud.
Yuqorida ta'kidlab o'tganimizdek, ko'plab kalkulyatorlarning asosiy kamchiliklari, masalan, Windows kalkulyatori, har bir keyingi raqam oldingi raqamni o'chirib tashlaydigan bitta oyna va agar foydalanuvchi xato raqamini aniqlasa oynada u faqat hisoblash natijasini ko'radi va asl ma'lumotlar allaqachon o'chad. Shuning uchun yuqorida biz ushbu kamchilikni bartaraf etdik va Visual C # asosida o'zimizning ko'p oynali kalkulyatorlarimizni ishlab chiqdik. Biroq, yuqoridagi kalkulyatorlarning hech biri formulalarni (yoki ifodalarni) kirita olmaydi, bu bizning keyingi kalkulyatorimizga ikkita derazali (formulani yozish uchun bitta oyna, ikkinchisi ushbu formulani hisoblash natijasi uchun) Excelga imkon beradi.