7075

Знакомство с методами проектирования программ на языках высокого уровня С++

Лабораторная работа

Информатика, кибернетика и программирование

1. Цель работы Знакомство с методами проектирования программ на языках высокого уровня С++. 2. Задание на работу В программе калькулятор необходимо реализовать: пункт главного меню Справка, состоящий из двух подпунктов Информация об авторе...

Русский

2013-01-14

280 KB

3 чел.

1. Цель работы

Знакомство с методами проектирования программ на языках высокого уровня С++.

2. Задание на работу

В программе калькулятор необходимо реализовать:

  •  пункт главного меню «Справка», состоящий из двух подпунктов «Информация об авторе» и «Помощь по выполнению заданных операций/функций»;
  •  реализовать функции sin, cos, tg, ctg.

3. Листинг программы:

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Ucalc.h"

#include "Unit2.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

boolean f=true, vv=true;

float GetValue()

{

return StrToFloat(Form1->Memo1->Text);

}

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b0Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+'0';

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b1Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"1";

else Memo1->Text="1";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b2Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"2";

else Memo1->Text="2";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b3Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"3";

else Memo1->Text="3";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b4Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"4";

else Memo1->Text="4";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b5Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"5";

else Memo1->Text="5";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b6Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"6";

else Memo1->Text="6";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b7Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"7";

else Memo1->Text="7";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b8Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"8";

else Memo1->Text="8";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::b9Click(TObject *Sender)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"9";

else Memo1->Text="9";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::bcClick(TObject *Sender)

{

f=true;

Memo1->Text="0";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::bpointClick(TObject *Sender)

{

if (f==true){

if (Memo1->Text=="0")

Memo1->Text=Memo1->Text+",";

else

if(Memo1->Text=="0,")

Memo1->Text=Memo1->Text+"";

else

if (Memo1->Text>"0")

Memo1->Text=Memo1->Text+",";

else Memo1->Text="0";}

f=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::bequClick(TObject *Sender)

{

vv=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Memo1->Text="0";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)

{

switch(Key){

case 48:b0->Click(); break; case 49:b1->Click();break;

case 50:b2->Click();break;  case 51:b3->Click(); break;

case 52:b4->Click(); break; case 53:b5->Click(); break;

case 54:b6->Click();break; case 55:b7->Click(); break;

case 56:b8->Click();break; case 57:b9->Click(); break;

case 8:bc->Click(); break; case 13:bequ->Click();break;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Memo1->Text = FloatToStr(sin(GetValue()));

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Memo1->Text = FloatToStr(cos(GetValue()));

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

Memo1->Text = FloatToStr(tan(GetValue()));

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

try {

Memo1->Text = FloatToStr(1/tan(GetValue()));

} catch(...)

{

if (vv==false){

bc->Click();  vv=true;}

if (Memo1->Text!="0")

Memo1->Text=Memo1->Text+"";

else Memo1->Text="Ошибка";

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

Form2->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

Form3->ShowModal();

}

//---------------------------------------------------------------------------

Отладка прошла успешно.

  1.  Результаты функционирования разработанного ПО.

Рисунок 1. Результат вычисления  функции sin 1 в радианах.                         

 

Рисунок 2. Результат вычисления функции cos 1 в радианах.

Рисунок 3. Результат вычисления функции tg 1 в радианах.

Рисунок 4. Результат    вычисления функции ctg 1 в радианах.

  

Рисунок 5. Результат вычисления функции ctg 0 в радианах (так как ctg 0 – бесконечность, то на дисплее появиться сообщение «Ошибка»)

Вывод

Ознакомились с некоторыми методами проектирования программ на С++.

Ответы на контрольные вопросы:

  1.  Какие переменные (с указанием типа) необходимы для реализации операций калькулятора ‘+’, ‘-’, ‘’, ‘:’,?

8) Как создается главное меню экранной формы (компонент типа TMainMenu)?


 

А также другие работы, которые могут Вас заинтересовать

42481. ОПРЕДЕЛЕНИЕ МОДУЛЯ СДВИГА И МОМЕНТОВ ИНЕРЦИИ ТВЁРДЫХ ТЕЛ НА УСТАНОВКЕ «КРУТИЛЬНЫЙ МАЯТНИК» 1.2 MB
  Крутильный маятник по своему конструктивному устройству аналогичен крутильным весам. Различие, однако, в том, что весы используются в статическом режиме равновесия, а маятник применяется в динамическом режиме. При этом детали его конструкции вращаются, периодически изменяя направление поворота. Определение моментов инерции тел относительно главных и парал лельных осей 7 2. Измерение момента инерции рамки крутильного маятника...
42482. Расширение пределов измерений приборов магнитоэлектрической системы 94 KB
  Для того чтобы на основе гальванометра сделать амперметр параллельно гальванометру подключают сопротивление называемое шунтом рис. Так как требовалось расширить предел измерения гальванометра по току в n раз то ; тогда и 5.4 Если цена деления гальванометра по току равна k1 цена деления амперметра стала равной k1n а чувствительность прибора при этом уменьшилась в n раз.
42483. Сигнали цифрового лінійного тракту ВОСПІ 281.5 KB
  Специфіка оптичного волокна як середовища для передачі сигналу також оптоелектронні компоненти передаючого і приймельного пристроїв накладають обмеження на параметри цифрового сигналу що поступає в лінійний тракт Волоконнооптичної системи передачі тому виникає необхідність перекодування вихідного двійкового цифрового потоку в погоджений з волоконнооптичним трактом лінійний сигнал. Код вибирається в залежності від конкретних умов передачі: виду вихідних повідомлень параметрів волоконнооптичної лінії звязку що...
42484. Моделювання та дослідження нерекурсивного фільтра на основі швидкого перетворення Фур’є 433 KB
  Львів 2011 Хід роботи 1. УВАГА Зберігання виконаної роботи проводити виключно командою Sve ll 3. Для виконання лабораторної роботи скопіювати фрагмент коду позначений коментарем 5лабораторна робота: Нерекурсивні фільтри на основі ШПФ в кінець програми після директиви endif. Вибрати пункт 5 та проаналізувати варіант виконання лабораторної роботи.
42486. ИСПОЛЬЗОВАНИЕ ВИЗУАЛЬНЫХ МАНИПУЛЯЦИОННЫХ МЕТАФОР ПРИ РАЗРАБОТКЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ 333.5 KB
  В процессе работы была подробно проанализирована метафора «Человек в стеклянном кубе», позволявшая отображать результаты запросов пользователей на реалистичной трехмерной модели человека. При этом, был найден удобный «манипулятор», который обеспечивает не только отображение статичных запросов пользователей, но и взаимодействие в реальном времени пользователя и интерфейса.
42488. Затухання цифрового лінійного тракту ВОСПІ 238 KB
  На магістральних ділянках ВОСП довжиною L коефіцієнт помилок не повинен перевищувати : Де М нормоване значення р для гіпотетичної лінії передачі протяжністю 25000 км визначене в відповідності з рекомендацією МККТТ G. Для регенераційної ділянки довжиною Lр нормуюче значення коєфіцієнта помилок одного регенератора: Різниця між рівнями потужності оптичного сигналу дБ на виході передаючої частини Ри і на вході приймальної частини апаратури Р0мін при якій коєфіцієнт помилок регенерації сигналу в ПРОМ не...