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

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

  • автор:

Как создать программу на 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. Простейший калькулятор на Паскале

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

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

Вобщем, недавно начал изучать 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,518

Вникать в это лениво, но может быть, в каком-нибудь 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 .

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

Написать программу, в которой вводятся два числа-операнда 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

Как написать простейший калькулятор?

Author24 — интернет-сервис помощи студентам

Написать программу, моделирующую простейший калькулятор. Пользователь вводит выражение типа ’6+3’ (цифра, знак операции +, цифра) и получает результат.

я написал что то вроде этого:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
program calcus; uses crt; var a,b,c:integer; d:string; begin clrscr; writeln('vvedite cifru 1'); readln(a); writeln('vvedite znak operacii'); readln(d); writeln('vvedite cifru 2'); readln(c); if d=('+') then b:=a+c; if d=('-') then b:=a-c; if d=('*') then b:=a*c; if d=('/') then b:=a div c; writeln('otvet: ',b); readln; end.

но препод говорит надо сделать строками а я незнаю =(
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Написать простейший форматтер программ на паскале
Задача — написать простейший форматтер программ на паскале, вот то что есть, вроде со всем.

Простейший калькулятор
Помогите написать простейший калькулятор который умеет + — : * и все.

Простейший калькулятор на действия (+.-./.*), пока не будет выбран знак равно
Написать программу на основе процедуры функции которая до тех пор выполняет простейшей.

Как написать калькулятор
как написать калькулятор ЗАРАНИЕ БЛАГОДАЮ!

23 / 23 / 12
Регистрация: 29.11.2009
Сообщений: 210

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
uses crt; const ASCII=[48..57]; var s,temp:string; i,f,l,code:integer; res:integer; d:byte; begin write('Введите выражение -->'); readln(s); temp:=''; for i:=1 to length(s) do begin if (ord(s[i]) in ASCII) then temp:=temp+s[i]; if not(ord(s[i]) in ASCII) or (i=length(s)) then begin if (i(s)) then begin case s[i] of '+':d:=1; '-':d:=2; '*':d:=3; '/':d:=4; end; val(temp,f,code); temp:=''; end else val(temp,l,code); end; end; case d of 1: res:=f+l; 2: res:=f-l; 3: res:=f*l; 4: res:=f/l; end; writeln(res); readln end.

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

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