Калькулятор

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Калькулятор

Post by Фант »

Простейший калькулятор

Code: Select all

graphics
SET BUTTONS CUSTOM
option base 1
fill color .2,.2,.2
button 0 title "" at 330,150 size 350,370
DEF F(z,X,y)
if z=1 then f=x+y
if z=2 then f=x-y
if z=3 then f=x*y
if z=4 then f=x/y
END DEF
dim h$(17)
h$(1)=7 ! h$(2)=8 ! h$(3)=9 ! h$(4)="+" ! h$(5)=4 ! h$(6)=5 ! h$(7)=6 ! h$(8)="-" ! h$(9)=1 ! h$(10)=2 ! h$(11)=3 ! h$(12)="*" ! h$(13)="С" ! h$(14)=0 ! h$(15)="." ! h$(16)="/" ! h$(17)="="
dim h(4,4)
h(1,1)=1
for i=1 to 4
for i1=1 to 4
fill color .5,.5,.5
x5=x5+1
if x5=4 or x5=8 or x5=12 or x5=16 then fill color .3,.5,.7 
if x5=13 then fill color .9,.1,.1 
button x5 title h$(x5) at 300+60*i1,200+60*i size 50,50
next i1
next i
fill color .3,.5,.1 
button 17 title h$(17) at 600,260 size 50,230 
fill color .9,.9,.9
draw color 0,0,0
s$=""
10 FIELD 1 TEXT 0 at 360,180 size 290,50
goto loop
15 FIELD 1 TEXT s$ at 360,180 size 290,50
loop:
for i=1 to 17
i$=i
if button_pressed (i$) then 
   if i<4 or (i>4 and i<8) or (i>8 and i<12) or i=15 or i=14 then !  s$=s$&h$(i) ! goto 15 ! endif
   if i=13 then ! s$="" ! goto 10 ! endif
   if i=4 then ! z=1 ! x=FIELD_TEXT$ ("1") ! s$="" ! goto 15 ! endif
   if i=8 then ! z=2 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
   if i=12 then ! z=3 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
   if i=16 then ! z=4 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
      if i=17 then ! y=FIELD_TEXT$ ("1") 
          if z=4 and y=0 then ! FIELD 1 TEXT "ОШИБКА" at 360,180 size 290,50 ! pause 1 ! s$="" !  goto 10
          else
          s$=f(z,x,y) ! goto 15 
          endif
      endif
endif
next i
goto loop

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Калькулятор

Post by Фант »

Обновление))) добавлены проценты, возведение в степень и знак "минус" для отрицательных чисел!

Code: Select all

graphics
SET BUTTONS CUSTOM
option base 1
fill color .2,.2,.2
button 0 title "" at 260,110 size 520,520
DEF F(z,X,y)
if z=1 then f=x+y
if z=2 then f=x-y
if z=3 then f=x*y
if z=4 then f=x/y
if z=5 then f=x*100/y
if z=6 then f=x^y
END DEF
dim h$(20)
h$(1)="+" ! h$(2)=7 ! h$(3)=8 ! h$(4)=9 ! h$(5)="-"  ! h$(6)="*" ! h$(7)=4 ! h$(8)=5 ! h$(9)=6 ! h$(10)="/" ! h$(11)="%" ! h$(12)=1 ! h$(13)=2 ! h$(14)=3 ! h$(15)="^" ! h$(16)="С" ! h$(17)="+/-" ! h$(18)=0 ! h$(19)="." ! h$(20)="="
dim h(4,5)
h(1,1)=1
for i=1 to 4
for i1=1 to 5
fill color .5,.5,.5
x5=x5+1
if x5=1 or x5=5 or x5=6 or x5=10 or x5=11 or x5=15 then fill color .3,.5,.7 
if x5=17 or x5=19  then fill color .3,.3,.3
if x5=16 then fill color .9,.1,.1 
if x5=20 then fill color .3,.5,.1  
button x5 title h$(x5) at 180+100*i1,120+100*i size 80,80
next i1
next i
fill color .9,.9,.9
draw color 0,0,0
s$=""
10 FIELD 1 TEXT 0 at 280,140 size 480,50
goto loop
15 FIELD 1 TEXT s$ at 280,140 size 480,50
loop:
for i=1 to 20
i$=i
if button_pressed (i$) then 
   if i=19 or (i>1 and i<5) or (i>6 and i<10) or (i>11 and i<15) or i=18 then !  s$=s$&h$(i) ! goto 15 ! endif
   if i=17 then 
        if  val(s$)>0 then ! s$="-"&s$ ! goto 15 ! endif
        if  val(s$)<0 then ! s$=MID$ (s$, 2) ! goto 15 ! endif
        endif
   if i=16 then ! s$="" ! goto 10 ! endif
   if i=1 then ! z=1 ! x=FIELD_TEXT$ ("1") ! s$="" ! goto 15 ! endif
   if i=5 then ! z=2 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
   if i=6 then ! z=3 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
   if i=10 then ! z=4 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
   if i=11 then ! z=5 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
   if i=15 then ! z=6 ! x=FIELD_TEXT$ ("1") ! s$="" !  goto 15 ! endif
      if i=20 then ! y=FIELD_TEXT$ ("1") 
          if z=4 and y=0 then ! FIELD 1 TEXT "ОШИБКА" at 280,140 size 480,50 ! pause 1 ! s$="" !  goto 10
          else
          s$=f(z,x,y) ! goto 15 
          endif
      endif
endif
next i
goto loop

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Калькулятор

Post by Mr. Kibernetik »

Поскольку smart BASIC является приложением как для айфона, так и для айпада, то лучше всего, если программа будет корректно работать на любом устройстве - это делает ее более универсальной.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Калькулятор

Post by Фант »

Нет айфона))) но надо по ширине экрана расчитывать.SCREEN_HEIGHT (), SCREEN_WIDTH ().. Правильно я понял?

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Калькулятор

Post by Mr. Kibernetik »

Фант wrote:Нет айфона))) но надо по ширине экрана расчитывать.SCREEN_HEIGHT (), SCREEN_WIDTH ().. Правильно я понял?
Да. Потому что даже если нет айфона, то потом выйдет какой-нибудь новый айпад с другим разрешением экрана - и все отъедет...

Alexxl
Posts: 26
Joined: Fri Jan 30, 2015 9:54 am
My devices: iPad 2 iPhone 5

Re: Калькулятор

Post by Alexxl »

А вот моя версия простейшего калькулятора. 8-)

option screenlock off
set orientation top

button "1" title "1" at 5,80 size 70,50
button "2" title "2" at 85,80 size 70,50
button "3" title "3" at 165,80 size 70,50
button "4" title "4" at 5,150 size 70,50
button "5" title "5" at 85,150 size 70,50
button "6" title "6" at 165,150 size 70,50
button "7" title "7" at 5,220 size 70,50
button "8" title "8" at 85,220 size 70,50
button "9" title "9" at 165,220 size 70,50
button "0" title "0" at 165,290 size 70,50
button "+" title "+" at 5,290 size 70,50
button "-" title "-" at 85,290 size 70,50
button "*" title "*" at 5,360 size 70,50
button "/" title "/" at 85,360 size 70,50
button "=" title "=" at 85,420 size 150,50
button "C" title "C" at 165,360 size 70,50
button "." title "." at 245,360 size 70,50
'button "%" title "%" at 245,420 size 70,50
button "M+" title "M+" at 245,80 size 70,50
button "M-" title "M-" at 245,150 size 70,50
button "MR" title "MR" at 245,220 size 70,50
button "MC" title "MC" at 245,290 size 70,50
button "END" title "END" at 5,420 size 70,50

loop:
text clear
print ;A$;


if button_pressed("1") then
A$ = A$ & "1"
end if
if button_pressed("2") then
A$ = A$ & "2"
end if
if button_pressed("3") then
A$ = A$ & "3"
end if
if button_pressed("4") then
A$ = A$ & "4"
end if
if button_pressed("5") then
A$ = A$ & "5"
end if
if button_pressed("6") then
A$ = A$ & "6"
end if
if button_pressed("7") then
A$ = A$ & "7"
end if
if button_pressed("8") then
A$ = A$ & "8"
end if
if button_pressed("9") then
A$ = A$ & "9"
end if
if button_pressed("0") then
A$ = A$ & "0"
end if
if button_pressed(".") then
A$ = A$ & "."
end if
if button_pressed("M+") then
RAM = RAM + A$
end if
if button_pressed("MR") then
A$ = RAM
end if
if button_pressed("M-") then
RAM = RAM - A$
end if
if button_pressed("MC") then
A$ = ""
RAM = 0
end if
if button_pressed("C") then
A$ = ""
end if
if button_pressed("END") then
END
end if
if button_pressed("-") then
B = A$*1
A$ = ""
Ch$ = "-"
end if
if button_pressed("+") then
B = A$*1
A$ = ""
Ch$ = "+"
end if
if button_pressed("*") then
B = A$*1
A$ = ""
Ch$ = "*"
end if
if button_pressed("/") then
B = A$*1
A$ = ""
Ch$ = "/"
end if
if button_pressed("=") then
C = A$*1
Z = ASC(Ch$)'знак
if Z = 45 then
A$ = B - C
end if
if Z = 43 then
A$ = B + C
end if
if Z = 42 then
A$ = B * C
end if
if Z = 47 AND C > 0 then
A$ = B / C
end if
end if
pause 0.1
goto loop

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Калькулятор

Post by Фант »

Поздравляю с первой программой! У Вас не плохо получилось! Теперь совершенствуйтесь!

Alexxl
Posts: 26
Joined: Fri Jan 30, 2015 9:54 am
My devices: iPad 2 iPhone 5

Re: Калькулятор

Post by Alexxl »

Фант wrote:Поздравляю с первой программой! У Вас не плохо получилось! Теперь совершенствуйтесь!
Спасибо, это действительно первая программа, и спасибо за пожелание. :)

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Калькулятор

Post by Mr. Kibernetik »

Серьезная программа!

Несколько комментариев.

Здесь нет смысла ставить первую точку с запятой, она ничего не дает:

Code: Select all

print ;A$;
Подобную запись:

Code: Select all

A$ = A$ & "1"
RAM = RAM + A$
можно делать короче:

Code: Select all

A$ &= "1"
RAM += A$ 

Alexxl
Posts: 26
Joined: Fri Jan 30, 2015 9:54 am
My devices: iPad 2 iPhone 5

Re: Калькулятор

Post by Alexxl »

Ок, спасибо, уже поправил.

Post Reply