Перейти к содержимому

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

  • автор:

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

Написать программу, в которой вводятся два числа-операнда x и y и знак арифметической операции (+, –, /, *). Вычислить результат z в зависимости от знака.

Предусмотреть реакции на возможный неверный знак операции, а также на ввод y =0 при делении.

Организовать возможность многократных вычислений без перезагрузки программы (то есть построить цикл). В качестве символа прекращения вычислений принять ‘0’.

Алгоритм решения задачи:

  1. Вводим знак. Если он является символом ‘0’, то прерываем цикл.
  2. Если введенный символ — арифметическая операция, запрашиваем два числа и выполняем вычисления в зависимости от введенного знака.
  3. Иначе сообщаем о некорректном вводе знака.

Программа на языке Паскаль:

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!'); writeln; end; end.

Пример работы программы:

sign: + x = 8.123 y = -3.5 4.62 sign: / x = 3.4 y = 2.75 1.24 sign: / x = 3 y = 0 Division by zero! sign: $ Bad sign! sign: 0

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

Вобщем, недавно начал изучать Object Pascal и одним из первых своих творений конечно был простейший калькулятор. Но мне хотелось его усложнить к многоразовому. Вот моя попытка:

unit Unit1;  interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls; type < TForm1 >TForm1 = class(TForm) Button1, ButtonDelete, ButtonReset, CompL, CompR, ButtonT, ButtonL, ButtonI, ButtonX, Button0, ButtonFinal, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9: TButton; Label1: TLabel; Memory: TLabel; procedure Button0Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure ButtonDeleteClick(Sender: TObject); procedure ButtonFinalClick(Sender: TObject); procedure ButtonIClick(Sender: TObject); procedure ButtonLClick(Sender: TObject); procedure ButtonResetClick(Sender: TObject); procedure ButtonTClick(Sender: TObject); procedure ButtonXClick(Sender: TObject); procedure FormShow(Sender: TObject); end; var Form1: TForm1; var i: string; row: integer; a, b: integer; act: char; answer: real; implementation procedure TForm1.FormShow(Sender: TObject); begin a:= 0; row:= 0 end; procedure TForm1.Button0Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(0); if row = 1 then row:= 2; end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(1) end; procedure TForm1.Button2Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(2) end; procedure TForm1.Button3Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(3) end; procedure TForm1.Button4Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(4) end; procedure TForm1.Button5Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(5) end; procedure TForm1.Button6Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(6) end; procedure TForm1.Button7Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(7) end; procedure TForm1.Button8Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(8) end; procedure TForm1.Button9Click(Sender: TObject); begin Label1.Caption:= Label1.Caption + Inttostr(9) end; procedure TForm1.ButtonTClick(Sender: TObject); begin if row = 0 then a:= Strtoint(Label1.Caption); Memory.Caption:= Memory.Caption + Label1.Caption + (' + '); Label1.Caption:= ''; row:= 1; act:= '+'; if (row = 2) and (Label1.Caption <> '') then b:= Strtoint(Label1.Caption); if act = '+' then answer:= a+b; if act = '*' then answer:= a*b; if act = '-' then answer:= a-b; if act = '/' then answer:= a/b; act:= '+'; row:= 1; Memory.Caption:= Memory.Caption + Label1.Caption + (' + '); Label1.Caption:= Floattostr(answer) + (' + ') end; procedure TForm1.ButtonXClick(Sender: TObject); begin if row = 0 then a:= Strtoint(Label1.Caption); Memory.Caption:= Memory.Caption + Label1.Caption + (' * '); Label1.Caption:= ''; row:= 1; act:= '*'; if (row = 2) and (Label1.Caption <> '') then b:= Strtoint(Label1.Caption); if act = '+' then answer:= a+b; if act = '*' then answer:= a*b; if act = '-' then answer:= a-b; if act = '/' then answer:= a/b; act:= '*'; row:= 1; Memory.Caption:= Memory.Caption + Label1.Caption + (' * '); Label1.Caption:= Floattostr(answer) + (' * ') end; procedure TForm1.ButtonIClick(Sender: TObject); begin if row = 0 then a:= Strtoint(Label1.Caption); Memory.Caption:= Memory.Caption + Label1.Caption + (' - '); Label1.Caption:= ''; row:= 1; act:= '-'; if (row = 2) and (Label1.Caption <> '') then b:= Strtoint(Label1.Caption); if act = '+' then answer:= a+b; if act = '*' then answer:= a*b; if act = '-' then answer:= a-b; if act = '/' then answer:= a/b; act:= '-'; row:= 1; Memory.Caption:= Memory.Caption + Label1.Caption + (' - '); Label1.Caption:= Floattostr(answer) + (' - ') end; procedure TForm1.ButtonLClick(Sender: TObject); begin if row = 0 then a:= Strtoint(Label1.Caption); Memory.Caption:= Memory.Caption + Label1.Caption + (' / '); Label1.Caption:= ''; row:= 1; act:= '/'; if (row = 2) and (Label1.Caption <> '') then b:= Strtoint(Label1.Caption); if act = '+' then answer:= a+b; if act = '*' then answer:= a*b; if act = '-' then answer:= a-b; if act = '/' then answer:= a/b; act:= '/'; row:= 1; Memory.Caption:= Memory.Caption + Label1.Caption + (' / '); Label1.Caption:= Floattostr(answer) + (' / ') end; procedure TForm1.ButtonDeleteClick(Sender: TObject); begin i:= Label1.Caption; if i <>'' then delete(i, Length(i),1); Label1.Caption:=i; end; procedure TForm1.ButtonResetClick(Sender: TObject); begin Label1.Caption:= (''); Memory.Caption:= (''); row:= 0; a:= 0; b:= 0; end; procedure TForm1.ButtonFinalClick(Sender: TObject); begin Memory.Caption:= (Memory.Caption + ' ' + act + ' ' + Label1.Caption + ' = ' + Floattostr(answer)); end; end.

Да, я знаю что это и близко недоработано (например можно поставить несколько знаков сразу, равно полностью неработоспособно итд), но меня волнует другая проблема. Уже на данной стадии так скажем разработки, проведение какой то функции игнорирует <> » и true/false а исполняет всё ёё совместимое. Может я просто туплю, об’ясните где.
Заранеё спасибо

Регистрация: 04.02.2011
Сообщений: 4,510

Вникать в это лениво, но может быть, в каком-нибудь if нужно несколько операторов выполнить, тогда следовало их взять в begin — end
А вообще чтоб не напрягать телепатор пожелавшего ответить, хорошо бы подробно описать проблему: «тискаю вот это, должен сработать обработчик этот и выполнить такие-то действия, а получается. »
Ну и совет банальный до неприличия: 99,9% вопросов снимается прогоном под отладчиком.
Когда этот этап будет пройден, совет для дальнейшего улучшения: обработчики кнопок можно объединить в один — все или только цифровые — это как покажется удобным.

procedure TForm1.To_knop(Sender: TObject); var stro: string ; . begin stro := (Sender as TButton).Caption ;

Теперь в stro — имя нажатой клавиши, по ней можно ветвиться.
Последний раз редактировалось digitalis; 10.11.2019 в 12:15 .

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Программы » Статьи
Здравствуйте, начинающие программисты! Из данной статьи вы узнаете как создать программу на Pascal ABC, например, простейший калькулятор. Заходим в программу Pascal ABC, перед нами открывается чистый лист с названием Program1.pas — это файл программных модулей для написания кода. В дальнейшем его можно компилировать в .exe — исполняемый файл, который будет открывать созданную нами программу. Для начала назовём нашу программу, к примеру, «Решебник», в коде пишем:

Program reshebnik;

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Не забывайте в конце каждой строчки обязательно ставить точку с запятой. Так как мы создаём простейший калькулятор, наш «Решебник» будет вычислять буквально одно действие — сложение двух переменных, то есть a+b=c. Во второй строчке кода объявляем переменные a, b, c и добавляем integer (с англ. — «целое») — уточнение, что a, b, c — целые числа:

Var a, b, c: integer;

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Var — в языках программирования означает «переменная». Теперь создадим блок команд (операторов), который начинается со слова begin и заканчивается словом end. Пишем:

begin Следующей сторочкой предложим пользователю ввести число. Инструкция Write (с анг. — «запись») выведет на экран монитора наше сообщение, WriteLN — ещё и переведёт курсор в начало следующей стороки, то есть пишем в файле четвёртой строчкой:

WriteLN (‘Введите число A:’); Пятой строчкой выполним ввод пользователя с помощью команды read (с англ. — «читать»):

ReadLN (a);

То же самое проделаем со вторым числом b:

WriteLN (‘Введите число B:.’);
ReadLN (b);
Выполняем подсчёт введённых переменных. Знак «:=» означает присваивание, присваиваем числу c значение a+b:

c := a+b; Выводим ответ и завершаем блок операторов:

WriteLN (‘Ответ’, c);
end.
Итак, наш «Решебник» готов к использованию. Проверим, как он работает. В Верхнем меню программы Pascal ABC выбираем Программа -> Выполнить.

Program reshebnik;
Var a, b, c: integer;
begin
WriteLN (‘Введите число A:’);
ReadLN (a);
WriteLN (‘Введите число B:’);
ReadLN (b);
c := a+b;
WriteLN (‘Ответ’, c);
end.

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Вот и все. Надеюсь, всё понятно. Желаю удачи и хороших результатов! 

Простой калькулятор в Pascal

Ниже приведён пример программы простого калькулятора. Программа получает от пользователя 2 произвольных числа, знак математической операции (+ — * / %) и выполняет соответствующую операцию. Затем выводит ответ. После программа спрашивает повторить ли операцию.

Использованы типы переменных real (дробные числа) и string (для ввода знаков)

Условный операторif

Цикл while

Пример программы написаной на языке Pascal в среде Pascal ABC.Net

var
a, b, c: real;//Дробный тип переменных
d, e: string;//символьный тип переменных
begin
e := ‘да’;//Объявляем начальное значение переменной, отвечающей за цикл
while e = ‘да’ do //начало цикла
begin
writeln(‘Введите первое число’);//вывод на экран сообщения
readln(a);//чтение с клавиатуры переменной
writeln(‘Введите второе число’);//вывод на экран сообщения
readln(b);//чтение с клавиатуры переменной
writeln(‘Введите знак математической операции’);//вывод на экран сообщения
readln(d);//чтение с клавиатуры переменной символьной(знак математической операции)
if d = ‘+’ then//условие если d имеет значение «+», тогда
c := a + b;//c примет значение а+b
if d = ‘-‘ then
c := a — b;
if d = ‘*’ then
c := a * b;
if d = ‘/’ then
c := a / b;
if d = ‘%’ then
c := a / 100 * b;
writeln(‘= ‘, c);//Вывод на экран переменной с
writeln(‘Повторить? да/нет’);//Выводим на экран сообщение
readln(e);//считываем переменную, отвечающую за цикл
end;//конец цикла
readln;//чтобы программа не закрывалась сама
end.

Исходник программы можно скачать ниже.

Калькултор.pas

Статью и программу подготовил

МБОУ «Школа №7» г. Богородск

Лосев Антон Владимирович

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

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