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)?


 

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

83892. Принципы и техника наложения кишечного шва. Классификация кишечных швов 50.62 KB
  Сквозные швы являются инфицированными грязными. Швы не проходящие через слизистую оболочку называют неинфицированными чистыми. В зависимости от рядности кишечных швов однорядные швы Матешука нить проходит через края серозной мышечной оболочек и подслнзнстой основы без захвата слизистой оболочки что обеспечивает хорошую адаптацию краев и надежное погружение в просвет кишки слизистой оболочки без дополнительной ее травматизации: двухрядные швы Альберта используется в качестве первого ряда сквозной шов. поверх которого...
83893. Техника выполнения резекции тонкой кишки. Анастомоз по типу «конец в конец» 49.79 KB
  Техника выполнения резекции тонкой кишки Мобилизация резецируемого участка перевязка сосудов и пересечение брыжейки удаляемого сегмента. В зависимости от способа мобилизации выделяют прямую и клиновидную резекции тонкой кишки. Резекция кишки наложение эластических и раздавливающих кишечных зажимов по линии предполагаемого разреза в косом направлении для наложения энтероанастомоза конец в конец и рассечение органа между ними удаляя больше тканей на свободном противобрыжеечном крае кишки в настоящее время для уменьшения...
83894. Техника выполнения резекции тонкой кишки. Анастомоз по типу «бок в бок» 50.15 KB
  Техника выполнения резекции тонкой кишки. В зависимости от способа мобилизации выделяют прямую и клиновидную резекции тонкой кишки.Резекция кишки наложение эластических и раздавливающих кишечных зажимов по линии предполагаемого разреза в косом направлении для наложения энтероанастомоза конец в конец и рассечение органа между ними удаляя больше тканей на свободном противобрыжеечном крае кишки в настоящее время для уменьшения травматизации кишки зажимы не применяются а используются швыдержачки.
83895. Хирургическая анатомия тонкой кишки. Отделы, особенности кровоснабжения. Брыжеечные синусы 52 KB
  Отделы тонкой кишки: двенадцатиперстная кишка рассматривалась выше; тощая кишка; подвздошная кишка. Между листками брюшины по мезентериальному краю выделяют так называемое внебрюшинное поле re nud вдоль которого в стенку кишки вступают прямые артерии а из нее выходят прямые вены и экс траорганные лимфатические сосуды. Скелетотопия: корень брыжейки тонкой кишки начинается от L2 позвонка и опускается слева направо до крестцово подвздошного сустава пересекая горизонтальную часть двенадцатиперстной кишки аорту нижнюю полую вену...
83896. Хирургическая анатомия толстой кишки. Отделы, кровоснабжение, венозный отток. Боковые каналы 50.73 KB
  Отделы толстой кишки: Слепая кишка Восходящая ободочная кишка Правый изгиб ободочной кишки Поперечная ободочная кишка Левый изгиб ободочной кишки Нисходящая ободочная кишка Сигмовидная ободочная кишка Прямая кишка Кровоснабжение ободочной кишки осуществляется верхней и нижней брыжеечными артериями. Ветви верхней брыжеечной артерии: Подвздошноободочная артерия отдает ветви к терминальному отделу подвздошной кишки червеобразному отростку передние и задние слепокишечные артерии и восходящую артерию кровоснабжающую начальную...
83897. Хирургическая анатомия слепой кишки. Техника выполнения аппендэктомии при ретроперитонеальном расположении червеобразного отростка 50.91 KB
  Техника выполнения аппендэктомии при ретроперитонеальном расположении червеобразного отростка. Червеобразный отросток Варианты положения периферической части отростка нисходящее верхушка отростка обращена вниз и влево и достигает пограничной линии а иногда опускается в малый таз наиболее частый вариант; медиальное вдоль концевого отдела подвздошной кишки; латеральное в правом боковом канале; восходящее вдоль передней стенки слепой кишки; ретроцекальное и ретроперитонеальное в забрюшинной клетчатке. Проекция основания отростка...
83898. Аппендэктомия. Доступ, техника выполнения, особенности операции при перитоните и гангренозном аппендиците 53.03 KB
  Аппендэктомия ppendectomi удаление червеобразного отростка. Показания: острые или хронические воспалительные изменения червеобразного отростка доброкачественные и злокачественные его новообразования. Оперативный прием При пересечении брыжейки отростка порциями со стороны свободного ее конца накладывают кровоостанавливающий зажим ближе к основанию пересекают брыжейку над зажимом после чего часть брыжейки под зажимом прошивают лигатуру завязывают. Культя отростка погружается в кисет.
83899. Ретроградная аппендэктомия. Доступ, показания, техника выполнения, опасности и профилактика осложнений 46.28 KB
  Показания: спаечный процесс в области червеобразного отростка ретроцекальное или ретроперитонеальное его положение невозможно вывести отросток в рану. Технические приемы: Отыскивание начального отдела слепой кишки и отростка. Проделывание окна в брыжейке отростка у его основания перевязка отростка. Пересечение отростка погружение культи в стенку слепой кишки по описанному выше способу.
83900. Хирургическое лечение рака толстой кишки 49.17 KB
  Радикальное иссечение опухоли тослтой кишки вместе с соответствующей частью брыжейки с сосудами и сопровождающими лимфатическими сосудами и узлами является наиболее подходящей операцией для локального устранения опухоли. Виды резекции толстой кишки в зависимости от локализации патологического процесса: Правосторонняя гемиколэктомия удаление всей правой половины толстой кишки захватывая 1015 см конечного отрезка подвздошной кишки слепую восходящую ободочную правый изгиб и правую треть поперечной ободочной кишки с последующим наложением...