Как сделать калькулятор в кумире
Перейти к содержимому

Как сделать калькулятор в кумире

  • автор:

Команда «выбор» в Кумир

Процесс разветвления во многих алгоритмах может проходить более чем по двум направлениям. Применение вложенных команд если делает код программы громоздким и очень неудобным для редактирования.

Сделать программу более компактной и читабельной в языке Кумир, во многих случаях, позволяет примение команды выбор-при-иначе-все .

Команда выбора имеет следующий формат:

  • выбор
  • при условие 1 : серия 1
  • при условие 2 : серия 2
  • .
  • при условие n : серия n
  • иначе серия n+1
  • все

Условия, следующие после ключевого слова при , являются логическими выражениями. Если в результате вычисления одного из них получается значение да , то исполняется соответствующая серия команд, после этого выполение команды выбор заканчивается. Если ни одно из условий не соблюдается, то выплняется серия, идущая после ключево слова иначе .

Рассмотрим пример простешей программы «Калькулятор»

  • выбор
  • при с = ‘+’ : вывод а + в
  • при с = ‘-‘ : вывод а — в
  • при с = ‘*’ : вывод а * в
  • при с = ‘/’ : вывод а / в
  • иначе вывод «Введен не корректный символ»
  • все

После ввода символа, который присваивается величине с , происходит его сравнение с символами, кодирующими математические операции. Если ни одно из условий не выполняется, то будет исполнена команда вывода и на экране появится сообщение «Введен не корректный символ».

Отметим, что ключевое слово иначе вместе с соответствующей серией команд может отсутствовать. В таком случае формат команды выбор имеет следующий вид:

  • выбор
  • при условие 1 : серия 1
  • при условие 2 : серия 2
  • .
  • при условие n : серия n
  • все

При такой организации алгоритма, если ни одно условий не выполняется, то происходит переход к первой команде, следующей после ключевого слова если .

Copyright © 2014-2021, Урок информатики
Все права защищены

Как сделать калькулятор в кумире

—>Персональный сайт Лаврова Петра Николаевича —>
учителя информатики

КуМир (Комплект Учебных МИРов) — система программирования, предназначенная для поддержки начальных курсов информатики и программирования в средней и высшей школе.

Особенности системы КуМир

  • В системе КуМир используется школьный алгоритмический язык с русской лексикой и встроенными исполнителями Робот и Чертёжник.
  • При вводе программы КуМир осуществляет постоянный полный контроль ее правильности, сообщая на полях программы об всех обнаруженных ошибках.
  • При выполнении программы в пошаговом режиме КуМир выводит на поля результаты операций присваивания и значения логических выражений. Это позволяет ускорить процесс освоения азов программирования.
  • Кумир работает в операционных системах Windows или Linux.

Система Кумир разработана в НИИСИ РАН по заказу Российской Академии Наук и распространяется свободно на условиях лицензии GNU 2.0.

Данная лицензия разрешает вам или вашей организации бессрочно использовать КуМир на любом количестве компьютеров в любых целях без оформления каких либо дополнительных документов.

________________________________________
Разложение натурального числа на простые множители
Тема: Циклы
Пользователь вводит число. Необходимо разложить его на простые числа.
Так как в КуМир есть только команда «выход» (аналог break) и нет команд-аналогов для continue и goto, то программа будет выглядеть немного сложнее, чем она была бы при их наличии.
Внешний цикл будет продолжаться до тех пор, пока исходное число не будет в результате деления на простые сомножители сведено к 1.
Внутренний цикл будет бесконечный. Выход из него будет осуществляться по команде «выход», когда найден очередной простой делитель.
Когда простой делитель найден, надо как-то «сообщить», что при новом выполнении этого внутреннего цикла поиск простых делителей надо начинать сначала. Для этого используется флаговая переменая (в данном случае «ф»).
Сам алгоритм поиска простых делителей сводится к последовательному делению исходного числа на подряд идущие натуральные числа от 2. Первое число, на которое нацело делится исходное, и есть его очередной простой сомножитель.

алг простые сомножители
нач
цел ч, п, ф
ввод ч
ф := 1
нц пока ч > 1
нц пока да
если ф = 1 то
п := 2
ф := 0
все
если mod(ч,п) = 0 то
ч := div(ч,п)
вывод п, » »
ф := 1
выход
иначе
п := п + 1
все
кц
кц
кон
________________________________________
Программа-калькулятор (КуМир)
Тема: Циклы
Написать программу, выполняющую арифметические операции (сложение, вычитание, умножение и деление) над двумя вещественными числами. Программа должна выполняться в цикле до тех пор, пока пользователь не введет определенный знак.
Одной из особенностей решения является то, что символьная переменная, в которую записывается знак операции, играет также роль сигнала о прекращении вычислений. Поэтому пользователю предлагается сначала ввести знак операции, а потом уже числа, если не был введен символ, сигнализирующий о завершении операций.

алг простейший калькулятор
нач
вещ x,y
сим s
нц пока да
вывод «Знак: »
ввод s
если s=’0′ то выход все
если s=’+’ или s=’-‘ или s=’*’ или s=’/’ то
вывод «x=»
ввод x
вывод «y=»
ввод y
выбор
при s=’+’: вывод x+y, нс
при s=’-‘: вывод x-y, нс
при s=’*’: вывод x*y, нс
при s=’/’:
если y=0 то вывод «Деление на ноль!», нс
иначе вывод x/y, нс
все
все
иначе
вывод «Неверный знак операции», нс
все
кц
кон
Пример выполнения программы
Знак: +
x=5.67
y=-4
1.67
Знак: /
x=5
y=0
Деление на ноль!
Знак: )
Неверный знак операции
Знак: /
x=3
y=10
0.3
Знак: 0
__________ ______________________________
Проверка гипотезы Сиракуз
Тема: Циклы
Возьмем любое натуральное число. Если оно четное, то разделим его на 2. Если оно нечетное, то умножим на 3, прибавим 1 и затем разделим на 2. Результат этих операций также будем проверять на четность и выполнять первое или второе действие. Гипотеза Сиракуз утверждает, что рано или поздно мы получим из единицу.
Напишем программу, которая проверяет гипотезу Сиракуз для числа, которое вводит пользователь. Пока число не сведется к единице будем либо делить его на 2 (если оно четно), либо умножать на 3, прибавлять 1 и делить на 2. Если гипотеза Сиракуз верна, то рано или поздно цикл остановится.

алг сиракуз
нач
цел n
ввод n
нц пока n <> 1
если mod(n,2) = 0 то
n := div(n,2)
иначе
n := div((3*n+1),2)
все
вывод n, ‘ ‘
кц
кон

Пример выполнения программы:
111
167 251 377 566 283 425 638 319 479 719 1079 1619 2429 3644 1822 911 1367 2051
3077 4616 2308 1154 577 866 433 650 325 488 244 122 61 92 46 23 35 53 80 40
20 10 5 8 4 2 1

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

Написать программу, которая будет складывать, вычитать, умножать или делить два числа. Числа и знак операции вводятся пользователем. После выполнения вычисления программа не должна завершаться, а должна запрашивать новые данные для вычислений. Завершение программы должно выполняться при вводе символа ‘0’ в качестве знака операции. Если пользователь вводит неверный знак (не ‘0’, ‘+’, ‘-‘, ‘*’, ‘/’), то программа должна сообщать ему об ошибке и снова запрашивать знак операции. Также сообщать пользователю о невозможности деления на ноль, если он ввел 0 в качестве делителя.

Запустить бесконечный цикл.

  1. Запросить ввод знака операции.
  2. Если был введен ‘0’, то прервать цикл операцией break.
  3. Если был введен один из знаков арифметических операций, то в зависимости от того, какой знак был введен, выполнить соответствующее ему арифметическое действие. При этом при делении проверить не был ли введен ноль. Если это так, то вывести сообщение, иначе выполнить деление.
  4. Иначе сообщить о неверно введенном знаке.

Pascal

простой калькулятор на паскаль

 
var
x,y,z: real;
sign: char;
begin
while True do begin
write('sign: '); readln(sign);
if sign = '0' then break;
if sign in ['+','-','*','/'] then begin
write('x='); readln(x);
write('y='); readln(y);
case sign of
'+': begin z := x + y; writeln(z:5:2) end;
'-': begin z := x - y; writeln(z:5:2); end;
'*': begin z := x * y; writeln(z:5:2); end;
'/': if y <> 0 then begin
z := x / y;
writeln(z:5:2)
end
else
writeln('Division by zero!');
end;
end
else writeln('Bad sign!')
end;
end.
 

sign: 8
Bad sign!
sign: 4
Bad sign!
sign: -
x=5
y=6
-1.00
sign: +
x=4.45
y=10.66
15.11
sign: *
x=-3.4
y=-67
227.80
sign: /
x=-78
y=123
-0.63
sign: /
x=9
y=0
Division by zero!
sign: i
Bad sign!
sign: 0

Язык Си

 
#include

main() float x,y;
char sign='+';
while (sign != '0') printf("Знак: ");
scanf("%c%*c", &sign);
if (sign == '0') < break; >
if (sign == '+' || sign == '-' || sign == '*' || sign == '/') printf("x %f%*c", &x);
printf("y %f%*c", &y);
switch (sign) case '+':
printf("%.2f\n", x+y);
break;
case '-':
printf("%.2f\n", x-y);
break;
case '*':
printf("%.2f\n", x*y);
break;
case '/':
if (y != 0) printf("%.2f\n", x/y);
else printf("Деление на ноль!\n");
>
>
else printf("Неверно указан знак операции\n");
>
>
 

Знак: 7
Неверно указан знак операции
Знак: 3
Неверно указан знак операции
Знак: +
x=4
y=5
9.00
Знак: /
x=0
y=0
Деление на ноль!
Знак: -
x=-34.4
y=-2
-32.40
Знак: 0

При вводе данных необходимо избавиться от символа перехода на новую строку. Это делается через формат «%*c».

Python

простой калькулятор на python(питон)

 
print("Ноль в качестве знака операции завершит работу программы")
while True:
s = input("Знак (+,-,*,/): ")
if s == '0': break
if s in ('+','-','*','/'):
x = float(input("x y %.2f" % (x+y))
elif s == '-':
print("%.2f" % (x-y))
elif s == '*':
print("%.2f" % (x*y))
elif s == '/':
if y != 0:
print("%.2f" % (x/y))
else:
print("Деление на ноль!")
else:
print("Неверный знак операции!")
 

Ноль в качестве знака операции завершит работу программы
Знак (+,-,*,/): h
Неверный знак операции!
Знак (+,-,*,/): +
x=78.456
y=23.567
102.02
Знак (+,-,*,/): -
x=3.44
y=10.25
-6.81
Знак (+,-,*,/): *
x=0.012
y=-2.15
-0.03
Знак (+,-,*,/): /
x=5
y=0
Деление на ноль!
Знак (+,-,*,/): /
x=-2.3
y=5
-0.46
Знак (+,-,*,/): 0

КуМир

 
алг простейший калькулятор
нач
вещ x,y
сим s
нц пока да
вывод "Знак: "
ввод s
если s='0' то выход все
если s='+' или s='-' или s='*' или s='/' то
вывод "x y Деление на ноль!", нс
иначе вывод x/y, нс
все
все
иначе
вывод "Неверный знак операции", нс
все
кц
кон
 

Знак: +
x=5.67
y=-4
1.67
Знак: /
x=5
y=0
Деление на ноль!
Знак: )
Неверный знак операции
Знак: /
x=3
y=10
0.3
Знак: 0

Basic-256

 
a = 1
while a=1
input "знак: ", s$
if s$ = "0" then
a=0
else
if s$ = "+" or s$ = "-" or s$ = "*" or s$ = "/" then
input "x: ", x
input "y: ", y
if s$ = "+" then print x+y
if s$ = "-" then print x-y
if s$ = "*" then print x*y
if s$ = "/" and y <> 0 then
print x/y
else
print "Деление на ноль"
endif
else
print "Знак может быть +, -, *, /"
endif
endif
endwhile
 

знак: /
x: 9
y: 0
Деление на ноль
знак: -
x: 9
y: -8
17
Деление на ноль
знак: /
x: 9
y: -8
-1.125
знак: 0

Нет оператора break, оператора выбора case.

Не используется if-else при выполнении арифметических операций, т.к. это сильно ухудшает читабельность программы. Хотя по логике было бы более правильно.

Обнаруживается какой-то глюк «Деление на ноль», когда его не должно быть.

Подписаться
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Новая статья

5 букв тинькофф

Тинькофф Банк, известный своими инновационными подходами
© 2024 Пошаговые инструкции

простой калькулятор на паскаль

var
x,y,z: real;
sign: char;
begin
while True do begin
write(‘sign: ‘); readln(sign);
if sign = ‘0’ then break;
if sign in [‘+’,’-‘,’*’,’/’] then begin
write(‘x=’); readln(x);
write(‘y=’); readln(y);
case sign of
‘+’: begin z := x + y; writeln(z:5:2) end;
‘-‘: begin z := x — y; writeln(z:5:2); end;
‘*’: begin z := x * y; writeln(z:5:2); end;
‘/’: if y 0 then begin
z := x / y;
writeln(z:5:2)
end
else
writeln(‘Division by zero!’);
end;
end
else writeln(‘Bad sign!’)
end;
end.

sign: 8
Bad sign!
sign: 4
Bad sign!
sign: —
x=5
y=6
-1.00
sign: +
x=4.45
y=10.66
15.11
sign: *
x=-3.4
y=-67
227.80
sign: /
x=-78
y=123
-0.63
sign: /
x=9
y=0
Division by zero!
sign: i
Bad sign!
sign: 0

main() float x,y;
char sign=’+’;
while (sign != ‘0’) printf(«Знак: «);
scanf(«%c%*c», &sign);
if (sign == ‘0’) < break; >
if (sign == ‘+’ || sign == ‘-‘ || sign == ‘*’ || sign == ‘/’) printf(«x %f%*c», &x);
printf(«y %f%*c», &y);
switch (sign) case ‘+’:
printf(«%.2f\n», x+y);
break;
case ‘-‘:
printf(«%.2f\n», x-y);
break;
case ‘*’:
printf(«%.2f\n», x*y);
break;
case ‘/’:
if (y != 0) printf(«%.2f\n», x/y);
else printf(«Деление на ноль!\n»);
>
>
else printf(«Неверно указан знак операции\n»);
>
>

Знак: 7
Неверно указан знак операции
Знак: 3
Неверно указан знак операции
Знак: +
x=4
y=5
9.00
Знак: /
x=0
y=0
Деление на ноль!
Знак: —
x=-34.4
y=-2
-32.40
Знак: 0

При вводе данных необходимо избавиться от символа перехода на новую строку. Это делается через формат «%*c».

простой калькулятор на python(питон)

print(«Ноль в качестве знака операции завершит работу программы»)
while True:
s = input(«Знак (+,-,*,/): «)
if s == ‘0’: break
if s in (‘+’,’-‘,’*’,’/’):
x = float(input(«x y %.2f» % (x+y))
elif s == ‘-‘:
print(«%.2f» % (x-y))
elif s == ‘*’:
print(«%.2f» % (x*y))
elif s == ‘/’:
if y != 0:
print(«%.2f» % (x/y))
else:
print(«Деление на ноль!»)
else:
print(«Неверный знак операции!»)

Ноль в качестве знака операции завершит работу программы
Знак (+,-,*,/): h
Неверный знак операции!
Знак (+,-,*,/): +
x=78.456
y=23.567
102.02
Знак (+,-,*,/): —
x=3.44
y=10.25
-6.81
Знак (+,-,*,/): *
x=0.012
y=-2.15
-0.03
Знак (+,-,*,/): /
x=5
y=0
Деление на ноль!
Знак (+,-,*,/): /
x=-2.3
y=5
-0.46
Знак (+,-,*,/): 0

алг простейший калькулятор
нач
вещ x,y
сим s
нц пока да
вывод «Знак: »
ввод s
если s=’0′ то выход все
если s=’+’ или s=’-‘ или s=’*’ или s=’/’ то
вывод «x y Деление на ноль!», нс
иначе вывод x/y, нс
все
все
иначе
вывод «Неверный знак операции», нс
все
кц
кон

Знак: +
x=5.67
y=-4
1.67
Знак: /
x=5
y=0
Деление на ноль!
Знак: )
Неверный знак операции
Знак: /
x=3
y=10
0.3
Знак: 0

a = 1
while a=1
input «знак: «, s$
if s$ = «0» then
a=0
else
if s$ = «+» or s$ = «-» or s$ = «*» or s$ = «/» then
input «x: «, x
input «y: «, y
if s$ = «+» then print x+y
if s$ = «-» then print x-y
if s$ = «*» then print x*y
if s$ = «/» and y 0 then
print x/y
else
print «Деление на ноль»
endif
else
print «Знак может быть +, -, *, /»
endif
endif
endwhile

знак: /
x: 9
y: 0
Деление на ноль
знак: —
x: 9
y: -8
17
Деление на ноль
знак: /
x: 9
y: -8
-1.125
знак: 0

Нет оператора break, оператора выбора case.

Не используется if-else при выполнении арифметических операций, т.к. это сильно ухудшает читабельность программы. Хотя по логике было бы более правильно.

Обнаруживается какой-то глюк «Деление на ноль», когда его не должно быть.

Кумир. Программа калькулятор. Пример работы оператора выбора

Программа калькулятор. Пример работы оператора выбора

Кумир. Программа калькулятор. Пример работы оператора выбора

На данном уроке рассмотрим оператор выбора в среде программирования КуМир

Общий вид команды выбор:

выбор при условие 1 : серия 1 при условие 2 : серия 2 . при условие n : серия n иначе серия n+1 все
алг калькулятор нач цел m,a,b вывод 'Введите 1 число: ' ввод a вывод 'Введите 2 число: ' ввод b вывод 'Если вы хотите сложить, нажмите 1; ' вывод 'Если вы хотите умножить, нажмите 2; ' вывод 'Если вы хотите вычесть, нажмите 3; ' вывод 'Если вы хотите разделить, нажмите 4; ' ввод m выбор при m=1: вывод 'Ответ =',a+b при m=2: вывод 'Ответ =',a*b при m=3: вывод 'Ответ =',a-b при m=4: вывод 'Ответ =',a/b все кон

Программу на языке «Паскаль» вы можете посмотреть здесь

0 9 119 просмотров

Вам также может быть интересно

Упростить логические выражения

Уроки 0 10 846 просмотров
Упростить логические выражения Тема: «Алгебра логики» В некоторых заданиях ЕГЭ по информатике под №

Установка Python в связке с PyCharm Edu

Уроки 0 3 001 просмотров

Установка Python в связке с PyCharm Edu Все большую популярность среди профессиональных программистов и

Определение информационного объема сообщения

Уроки 0 27 689 просмотров

Определение информационного объема сообщения. Информатика в 7 классе. Тема: «Измерение информации» Формулы Для определения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *