Программное обеспечение (ПО)


def onNumChange ( sender )



Download 0,66 Mb.
bet8/8
Sana06.02.2023
Hajmi0,66 Mb.
#908183
1   2   3   4   5   6   7   8
Bog'liq
Phiton OOP графика uzb — копия

def onNumChange ( sender ):
hexLabel.text = "{:X}".format (
sender.value )
decEdit.onChange = onNumChange
ишлов берувчинини ўрнатиш
ўнолтилик системага
Ишга тушириш:
app.run()
Эни - символларда

Объектга мўлжалланган дастурлаш. Python тили

§ 5. Модель ва тақдимот

Яна бир декомпозиция


ечим
масала: олдинги ёзилган коддан такроран фойдаланиш.
модель
(маълумотлар ва уларга ишлов бериш услублари)
Тақдим этиш
( қўлловчи билан интерфейс)
ечим
Тақдим этиш
( қўлловчи билан интерфейс)

Модель и тақдимот


модель
тақдимот
тақдимот
ечим
Масала: доллар курси ўзгариши –ҳақидаги маълумотларни сақлаш ва улардан фойдаланиш.
модель
(массив, минимум ва максимумни излаш, олдиндан айтиш)
тақдимот
(формулалар, диаграммалар, графиклар, жадваллар)

x

y

z

1

1

4

2

2

5

3

3

6

Модель и тақдимот


масала: арифсктик ифода қийматини ҳисоблаш:
  • Бутун сонлар
  • Арифметик амал белгилари + - * /

Модель:
  • Белгилар сатри
  • Ҳисоблаш алгоритми:

k = охирги амал тартиб рақами
n1 = чап томонининг ыиймати
n2 = ўнг томонининг ыиймати
Натижа = амал(n1, n2)
22 + 13 – 3 * 8
n1
n2
k
функция lastOp ( 6-боб)
Рекурсия!
!
Нима етишмайди?
?

Модель


k = охирги амал тартиб рақами
if k < 0:
натижа = сатр сонга
else:
n1 = чап томонининг ыиймати
n2 = ўнг томонининг ыиймати
Натижа = амал(n1, n2)
Псевдокод:

Модель: ҳисоблашлар


def Calc ( s ):
k = lastOp ( s )
if k < 0: # сатр тўлиғича - сон
return int(s)
else:
n1 = Calc ( s[:k] ) # чап томон
n2 = Calc ( s[k+1:] ) # ўнг томон
# амаллар бажарилсин:
if s[k] == "+": return n1+n2
elif s[k] == "-": return n1-n2
elif s[k] == "*": return n1*n2
else: return n1 // n2

Ёрдамчи функциялар


def priority ( op ):
if op in "+-": return 1
if op in "*/": return 2
return 100
Амаллар даражалари:
def lastOp ( s ):
minPrt = 50 # 2 ва 100 орасидаги сон
k = -1
for i in range(len(s)):
if priority(s[i]) <= minPrt:
minPrt = priority(s[i])
k = i
return k
Охирги амал тартиб рақами:
<=
Нега <=?
?
model.py:
Calc
priority
lastOp
Модуль:

тақдимот


рўйхат TListBox
Тушувчи рўйхат TComboBox
app = TApplication ( "Калькулятор" )
app.size = (200, 150)
...
app.run()
Объект-илова:

Компонентлар


Input = TComboBox ( app, values = [],
height = 1 )
Input.align = "top"
Input.text = "2+2"
Тушувчи рўйхат:
Қийматлар рўйхати
баландлик
Юқорига жипслаштирилсин
матн
Хотирада сақлаш учун рўйхат:
Answers = TListBox ( app, values = [] )
Answers.align = "client"
Бўш соҳа тўлдирилсин

Ишнинг мантиқи


if Enter клавиши босилган бўлса:
ифода ҳисоблансин
натижа рўйхат бошига қўшилсин
if ифода очилувчи рўйхатда бўлмаса:
у очилувчи рўйхатга киритилсин
Enter клавиши босилишининг ишлов берувчиси :
def doCalc ( event ):
...
Ишлов берувчини ўрнатиш:
Input.bind ( "", doCalc )
«боғлансин»
Enter клавиши

Enter клавиши босилишининг ишлов берувчиси :


from model import Calc
def doCalc ( event ):
expr = Input.text # ифода ўқилсин
x = Calc ( expr ) # ҳисоблансин
Answers.insert ( 0, expr + "=" + str(x) )
if not Input.findItem ( expr ):
Input.addItem ( expr )
Рўйхатда бўлмаса

Топшириқ


«A»: Дастурни шундай ўзгартиринг-ки у ҳақиқий турдаги сонли ифодаларнинг қийматини ҳисоблайдиган бўлсин.

Топшириқ


«B»: Дастурни шундай ўзгартиринг-ки у қавсли сонли ифодаларни ҳисоблайоладиган бўлсин.

Топшириқ


«С»: Дастурни шундай ўзгартиринг-ки у abs, sin, cos, sqrt.функцияларни ўз ичига олган сонли ифодаларни ҳисоблайоладиган бўлсин.

Топшириқ


«D»: Дастурни шундай ўзгартиринг-ки унинг барча мантиқи TCalculator синфида ва. дастурнинг умумий кўриниши қуйидагича бўлсин.
class TCalculator(TApplication):
# здесь должно быть описание класса
app = TCalculator()
app.run()
Нотўғри ифода киритил-ганда хато ҳақидаги хабар чиқарилсин
tkinter.messages моду-лидаги. showerror функция-сидан фойдаланинг.

Топшириқ


«D»: (давоми) Барча ҳисоблашлар натижалари ва хато ҳақидаги хабарлар results.txt: файлига ёзилади
...
sin(1.2)*sqrt(1.7)=1.215230290196084
Нотўғри ифода sin(1.2)*sqrt(1.7)qwe
Файлга ёзиш процедурасини Tcalculator синфининг log услуби сифатида расмийлаштиринг

Калькулятор


Мустақил!
!

Фильм тугади


ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru

Иллюстрациялар манбалари

  • www.picstopin.com
  • maugav.info
  • yoursourceisopen.com
  • ru.wikipedia.org
  • «Бином» нашриёти рассомларининг расмлари
  • Муаллифларнинг материаллари

Download 0,66 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish