MB amaliy 3
MB amaliy 3
VAZIRLIGI
QARSHI DAVLAT TEXNIKA UNVERSTETI
3-AMALIY ISH
BAJARDI: Nurmatov B.
QABUL QILDI: Yaxyayev S.
QARSHI 2025
Mavzu:Kalkulyator Dasturining Nazariy Qismi
Loyihaning maqsadi
Ishlatilgan texnologiyalar
Tugmalar funksiyasi
Tugma Vazifasi
C Ekranni tozalaydi
= Natijani hisoblaydi
Hisoblash mexanizmi
Ifodani hisoblash:
× va ÷ belgilar * va / ga almashtiriladi.
Kutilmagan xatoliklar:
try-catch bloki orqali noto‘g‘ri ifodalarda Xato! deb chiqadi (masalan, 8+÷5).
Dizayn va UI
Tugmalar ranglari:
Dastur kodi:
import 'package:flutter/material.dart';
import 'package:math_expressions/math_expressions.dart';
void main() {
runApp(CalculatorApp());
}
class CalculatorApp extends StatelessWidget {
@override
return MaterialApp(
title: 'Kalkulyator',
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: Color(0xFF1E1E1E),
),
home: CalculatorHomePage(),
debugShowCheckedModeBanner: false,
);
@override
setState(() {
if (value == 'C') {
input = '';
result = '0';
try {
result = _calculate(input);
} catch (e) {
result = 'Xato!';
} else {
input += value;
});
try {
Parser p = Parser();
ContextModel cm = ContextModel();
return eval.toString();
} catch (_) {
return 'Xato!';
];
@override
return Scaffold(
appBar: AppBar(
title: Text('Kalkulyator'),
centerTitle: true,
backgroundColor: Colors.black,
),
body: Column(
children: [
Expanded(
child: Container(
padding: EdgeInsets.all(20),
alignment: Alignment.bottomRight,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
input,
),
SizedBox(height: 10),
Text(
result,
),
],
),
),
),
Divider(color: Colors.white30),
Expanded(
flex: 2,
child: GridView.builder(
itemCount: buttons.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
return Padding(
padding: EdgeInsets.all(8),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: _getButtonColor(btn),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16)),
),
child: Text(
btn,
),
),
);
},
),
),
],
),
);
if (value == '=' || value == '+' || value == '-' || value == '×' || value == '÷')
return Colors.orange;
return Colors.grey[850]!;