Программа игры Кости

Министерство науки и образования РФ
Федеральное агентство по образованию
Государственное образовательное учреждение
Профессионального высшего образования
Иркутский государственный технический университет
Факультет кибернетики
Кафедра вычислительной техники
Отчет
О курсовой работе
Игра«Кости»
По дисциплине “Программирование на языке высокого уровня”
Выполнил:
Студент гр. ЭВМ-08-2
Григорьев Д.Е.
Проверила:
Егорова Н.Н.
Иркутск 2010
Оглавление
Постановка задачи
Спецификации модулей
Описание работы программы
Сравнение языков — Паскаль и С++
Листинг программы Delphi
Заключение
Использованная литература
Постановка задачи
Разработать программу, моделирующую игру «Кости». Играющий называет любое число от 2 до 12 и ставку, которую он делает в этот ход. В начальный момент у играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока. Программа работает с использованием генератора псевдослучайных чисел.
Таблица внешних спецификаций

Имя
Тип
Назначение
Одз
1
a,b
Integer
Значения бросков кубиков
[1. .6]
2
X
Integer
Задуманное число
[2. .12]
4
Ns
Integer
Текущий счет
[0…1000]
5
st
Integer
ставка
[1. ns]
6
Sum
Integer
Сумма броска
[2. .12]
7
K
Integer
Всего игр
[0. .2147483647]
8
v
Integer
Количество выигрышей
[0. .2147483647]
9
P
integer
Количество проигрышей
[0. .2147483647]
10
Name
Ansistring
Имя игрока
Все символы
Cхема иерархии модулей
Спецификации модулей

Имя
Назначение
Параметры
1
Form1
Модуль программы для регистрации игрока

2
Form2
Модуль программы для игры

3
Main
Menu
Меню программы
Файл: Новая игра; Выход.
Справка: О программе; Правила игры
4
Прием ставки
Принимает ставку игрока
St-ставка, x-задуманное число, ns-ограничение ставки
5
Бросок костей
Бросает игральные кости и выводит результат
A,b-значение броска, sum-сумма броска, k-количество бросков, v-количество выигрышей, p-количество проигрышей, ns-текущий счет.
6
Сброс результатов
Возвращает исходное значение переменных p,v,k,ns
I, v, l, ns
7
Новая игра
Начинает новую игру
I, v, l, ns.
8–PAGE_BREAK–
Выход
Выход из игры

9
Form4
О программе


10
Form5
Правила игры

11
Form3
Игра проиграна

Таблица тестов

Входные данные
Результат
Комментарии

name
x
st

1
Name
3
10
Первый кубик = 3; Второй кубик = 1;
Сумма кубиков = 4; Вы проиграли!!! =)
Количество поражений: 1 Количество побед: 0
Соотношение побед и поражений: 0 к 1

2
Name
5
5
Первый кубик = 4; Второй кубик = 1;
Сумма кубиков = 5; Вы проиграли!!! =)
Вы выйграли! Ваш выигрышь увеличин в 4 раза =)
Количество поражений: 1 Количество побед: 1
Соотношение побед и поражений: 1 к 1

3
Name
7
15
Первый кубик = 4; Второй кубик = 2;
Сумма кубиков = 6; Вы выиграли! = (
Количество поражений: 1 Количество побед: 2
Соотношение побед и поражений: 2 к 1

4
Name
12
Проверьте введенные данные

5
Name
15
21
Проверьте введенные данные

6
Name

2
Проверьте введенные данные

7
Name
3

Проверьте введенные данные

8
Name
4
50
Проверьте введенные данные
При текущем счете меньшем чем ставка
9



Введите имя игрока

Описание работы программы
При запуске программы появляется окно регистрации игрока (рис.1).
/>
Рис.1 Регистрация игрока
По нажатию кнопки «Начать игру» появляется основное окно программы (рис.2).
/>
Рис.2 Основное окно программы
Для начала игры необходимо сделать ставку, не превышающую текущий счет и задумать число от 2 до 12. После заполнения полей «Ставка» и «Число» нажимаем кнопку «Принять». После чего активируется кнопка «Бросить кубики» (Рис.4)
/>
Рис.4 «Бросить кубики»
После броска кубиков программа считает их сумму и выводит результат в поле расположенное справа от кнопки, в случае если сумма кубиков меньше задуманного числа вы выигрываете, и ваша ставка прибавляется к текущему счету (рис.5).
Если сумма кубиков равна задуманному числу, то ваша ставка умножается на 4 и так же прибавляется к текущему счету (Рис.6).
В случае если сумма кубиков больше задуманного числа Вы проигрываете и ваша ставка отнимается от текущего счета (рис.7). Если у вас закончились очки появится диалоговое окно, в котором вам будут предложены следующие действия (рис.8).:
«Повторить» — начинает игру заново.
«Выход» — выходит из игры.
/>
Рис.5 Сумма кубиков меньше задуманного числа
/>
Рис.6 Сумма кубиков равна ставке
/>
Рис.7 Сумма кубиков больше задуманного числа.
/>
Рис.6 Вы проиграли!
Для очистки результатов нажмите кнопку «Очистить результаты».
Чтобы ознакомится с правилами игры, нажмите: «Справка» — > «Правила игры».
Для начала новой игры зайдите в меню «файл»->«Новая Игра», для выхода «файл»-> «Выход».
Сравнение языков — Паскаль и С++    продолжение
–PAGE_BREAK–
Определение языка программирования.
Язык программирования — формальная знаковая система, предназначенная для записи программ, задающих алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.
Типы данных и их описание
Pascal
Диапазон значений
Размер
C++
Типы, имеющие одинаковый диапазон значений
Shortint
-128. .127
1 байт
Char
Byte
0. .255
1 байт
Unsigned char
Word
0. .65535
2 байта
Unsigned short
Integer
-32767. .32768
2 байта
Short int
Longint
-2147483648…2147483647
4/2 байта
Long int
Extended
3.4E-4932. .1.1E+4932
10 байт
Long Double
Типы, имеющие разный диапазон значений
Integer
-32767. .32768
2 байта

Real
2.9E-39. .1.7E+38
6 байт

Single
1.5E-45…3.4E+38
4 байта

Double
5.0E-324…1.7E+308
8 байт

Comp
-9.2E+18…9.2E+18
8 байт


Зависит от реализации
2/4 байта
Int

Зависит от реализации
2/4 байта
Unsigned int

0. .4294967295
4 байта
Unsigned longint

+- (3.4E-38…3.4E+38)
4 байта
Float

+- (1.7E-308…1.7E+308)
8 байт
Double

+- (3.4E-4932…1.1E+4932)
10 байт
Long double
Описание основных операторов
Pascal
C++
Структурный оператор
Begin

End;
{

}
Условные операторы
If then
if или

If then
Else
if
else или

Case of
: действие;
: действие;
End;
Switch
{    продолжение
–PAGE_BREAK–
Case :
{

}
Case ^
{

}
Циклические операторы
For : = to do …
for (=;
;
++ (–);)
{

}
While do …
While
{

}
Repeat

Until
Do
{

}
While
Операторы ввода-вывода
Read ();
Cin>>;
Write ();
Cout
Логические операторы
Not
! =
and
&
or
||
Листинг программы С++
Form1
// —————————————————————————
#include
#pragma hdrstop
#include «Unit1. h»
#include «Unit2. h»
// —————————————————————————
#pragma package (smart_init)
#pragma resource “*. dfm”
TForm1 *Form1;
AnsiString name;
// —————————————————————————
__fastcall TForm1:: TForm1 (TComponent* Owner)
: TForm (Owner)
{
Image3->Visible=false;
}
// —————————————————————————
void __fastcall TForm1:: Animate1Close (TObject *Sender)
{
Edit1->Text=2;
}
// —————————————————————————
void __fastcall TForm1:: Image2MouseMove (TObject *Sender, TShiftState Shift,
int X, int Y)
{
Image3->Visible=true;
}
// —————————————————————————
void __fastcall TForm1:: Image2MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image3->Show ();
}
// —————————————————————————
void __fastcall TForm1:: Image2MouseUp (TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Image3->Hide ();
name=Edit1->Text;
if ( (name! =””) && (name! =” “)) {
Form2->Show ();
Form2->Label4->Caption=name;
Form1->Hide (); }
else
{ShowMessage (“Ââåäèòå èìÿ”); }
}
// —————————————————————————
Form2
// —————————————————————————
#include
#pragma hdrstop
#include «Unit1. h»
#include «Unit2. h»
#include «Unit4. h»
#include «Unit3. h»
#include «Unit1. h»
#include «Unit5. h»
// —————————————————————————
#pragma package (smart_init)
#pragma resource “*. dfm”
TForm2 *Form2;
int i=0;
int v=0;
int l=0;
int a,b,sum=0;
int h,x,st,ns;
// —————————————————————————
__fastcall TForm2:: TForm2 (TComponent* Owner)
: TForm (Owner)
{
Form2->Caption = (“Êîñòè ” + DateToStr (Now ()));
Button2->Enabled=false;
Button3->Enabled=false;
}
// —————————————————————————
void __fastcall TForm2:: N4Click (TObject *Sender)
{
Form1->Close ();
}
// —————————————————————————
void __fastcall TForm2:: Button2Click (TObject *Sender)
{
Button3->Enabled=true;
a=random (6) +1;
b=random (6) +1;
i=i+1;
Memo1->Lines->Add (“Èãðîê ” + Label4->Caption);
Memo1->Lines->Add (“Áðîñîê ¹ ” + IntToStr (i));
Memo1->Lines->Add (“Ïåðâûé êóáèê = ” + IntToStr (a));
Memo1->Lines->Add (“Âòîðîé êóáèê = ” + IntToStr (b));
switch (a)
{
case 1: Image2->Picture->LoadFromFile («1. jpg»); break;
case 2: Image2->Picture->LoadFromFile («2. jpg»); break;
case 3: Image2->Picture->LoadFromFile («3. jpg»); break;
case 4: Image2->Picture->LoadFromFile («4. jpg»); break;
case 5: Image2->Picture->LoadFromFile («5. jpg»); break;
case 6: Image2->Picture->LoadFromFile («6. jpg»); break;
}
switch (b)
{
case 1: Image3->Picture->LoadFromFile («1. jpg»); break;
case 2: Image3->Picture->LoadFromFile («2. jpg»); break;
case 3: Image3->Picture->LoadFromFile («3. jpg»); break;
case 4: Image3->Picture->LoadFromFile («4. jpg»); break;
case 5: Image3->Picture->LoadFromFile («5. jpg»); break;
case 6: Image3->Picture->LoadFromFile («6. jpg»); break;
}
sum=a+b;
Memo1->Lines->Add (“Ñóììà êóáèêîâ = ” + IntToStr (sum));
if (sum == x)
{
Memo1->Lines->Add (“Âû âûèãðàëè! Âàø âûéãðûøü óâåëè÷èí = (“);
ns=ns+st*4;
Animate1->Visible=true;
Animate1->FileName= («win. avi»);
Animate1->Play (1,60,10000);
v=v+1;
Memo1->Lines->Add (“Êîëè÷åñòâî ïîáåä: “+IntToStr (v));
Memo1->Lines->Add (“Êîëè÷åñòâî ïîðàæåíèé: “+IntToStr (l));    продолжение
–PAGE_BREAK–
}
else
{
if (sum
{
Memo1->Lines->Add (“Âû âûèãðàëè!!! = (“);
ns=ns+st;
Animate1->Visible=true;
Animate1->FileName= («win. avi»);
Animate1->Play (1,60,10000);
v=v+1;
Memo1->Lines->Add (“Êîëè÷åñòâî ïîáåä: “+IntToStr (v));
Memo1->Lines->Add (“Êîëè÷åñòâî ïîðàæåíèé: “+IntToStr (l));
}
}
if (sum > x)
{
Memo1->Lines->Add (“Âû ïðîèãðàëè!!! =)”);
ns=ns-st;
Animate1->Visible=true;
Animate1->FileName= («loose. avi»);
Animate1->Play (1,60,10000);
l=l+1;
Memo1->Lines->Add (“Êîëè÷åñòâî ïîðàæåíèé: “+IntToStr (l));
Memo1->Lines->Add (“Êîëè÷åñòâî ïîáåä: “+IntToStr (v));
}
Edit1->Text=IntToStr (ns);
if (ns
Form3->ShowModal ();
}
Memo1->Lines->Add (“Ñîîòíîøåíèå ïîáåä è ïîðàæåíèé: “+IntToStr (v) +” ê “+IntToStr (l));
Button2->Enabled=true;
Button3->Enabled=true;
// Button4->Enabled=true;
}
// —————————————————————————
void __fastcall TForm2:: FormClose (TObject *Sender, TCloseAction &Action)
{
Form1->Close ();
}
// —————————————————————————
void __fastcall TForm2:: Button1Click (TObject *Sender)
{
if ( (Edit2->Text! =””) && (Edit3->Text! =””)) {
ns=StrToInt (Edit1->Text);
st=StrToInt (Edit2->Text);
x=StrToInt (Edit3->Text);
if ( (x12) || (st>ns)) {ShowMessage (“Ïðîâåðüòå ïðàâèëüíîñòü ââîäà”); }
else
Button2->Enabled=true;
}
else
{ShowMessage (“Îäíî èç ïîëåé íå çàïîëíåíî!”); }
}
// —————————————————————————
void __fastcall TForm2:: Edit2Change (TObject *Sender)
{
Button2->Enabled=false;
}
// —————————————————————————
void __fastcall TForm2:: Edit3Change (TObject *Sender)
{
Button2->Enabled=false;
}
// —————————————————————————
void __fastcall TForm2:: Edit2KeyPress (TObject *Sender, char &Key)
{
if ( (Key >= ‘0’) && (Key
else
{
Key = 0; // íå öèôðà
}
}
// —————————————————————————
void __fastcall TForm2:: Edit3KeyPress (TObject *Sender, char &Key)
{
if ( (Key >= ‘0’) && (Key
else
{
Key = 0; // íå öèôðà
}
}
// —————————————————————————
void __fastcall TForm2:: Image1MouseMove (TObject *Sender, TShiftState Shift,
int X, int Y)
{
Label5->Caption = TimeToStr (Now ());
}
// —————————————————————————
void __fastcall TForm2:: N3Click (TObject *Sender)
{
Form2->Hide ();
Form1->Show ();
Edit1->Text=100;
Edit2->Text=«2»;
Edit3->Text=«3»;
i,v,l=0;
Button2->Enabled=false;
Button3->Enabled=false;
Form1->Edit1->Text=””;
Memo1->Clear ();
}
// —————————————————————————
void __fastcall TForm2:: Button3Click (TObject *Sender)
{
Memo1->Clear ();
i,v,l=0;
Edit1->Text=100;
Button3->Enabled=false;
Animate1->Visible=false;
}
// —————————————————————————
void __fastcall TForm2:: N5Click (TObject *Sender)
{
Form4->Show ();
}
// —————————————————————————
void __fastcall TForm2:: N6Click (TObject *Sender)
{
Form5->Show ();
}
// —————————————————————————
Form3
// —————————————————————————
#include
#pragma hdrstop
#include «Unit3. h»
#include «Unit2. h»
// —————————————————————————
#pragma package (smart_init)
#pragma resource “*. dfm”
TForm3 *Form3;
// —————————————————————————
__fastcall TForm3:: TForm3 (TComponent* Owner)
: TForm (Owner)
{
}
// —————————————————————————
void __fastcall TForm3:: Button1Click (TObject *Sender)
{
Form2->N3->Click ();
Form3->Close ();
}
// —————————————————————————
void __fastcall TForm3:: Button2Click (TObject *Sender)
{
Form2->Close ();
}
// —————————————————————————
ЛистингпрограммыDelphi
Form2
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, jpeg, ExtCtrls, ComCtrls;
type
TForm2 = class (TForm)
Image1: TImage;
Label1: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
Edit3: TEdit;
Label4: TLabel;
Button2: TButton;
Memo1: TMemo;
Image2: TImage;
Image3: TImage;
Animate1: TAnimate;
Button3: TButton;
Label5: TLabel;
procedure Button1Click (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure N3Click (Sender: TObject);
procedure Edit2Change (Sender: TObject);
procedure Edit1Change (Sender: TObject);
procedure Edit1KeyPress (Sender: TObject; var Key: Char);
procedure Edit2KeyPress (Sender: TObject; var Key: Char);
procedure Button2Click (Sender: TObject);
procedure N2Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure N5Click (Sender: TObject);
procedure N6Click (Sender: TObject);
procedure Image1MouseMove (Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
k,v,p,a,b,ns,st,x: integer;
prov1, prov2: string;
implementation
uses Unit1, Unit3, Unit4, Unit5;
{$R *. dfm}
procedure TForm2. Button1Click (Sender: TObject);
begin
prov1: =Edit1. Text;
prov2: =Edit2. Text;
if ( (prov1”) or (prov2”)) then begin
x: =Strtoint (Edit2. Text);
st: =Strtoint (Edit1. Text);
ns: =Strtoint (Edit3. Text);
if ( (x12) or (st>ns)) then
begin
ShowMessage (‘Проверьте правильность вводимых данных’);
end
else
begin
button2. Enabled: =true;
end;
end
else begin
ShowMessage (‘Проверьтеправильностьвводимыхданных’); end;
end;
procedure TForm2. FormClose (Sender: TObject; var Action: TCloseAction);
begin
Form1. close;
end;
procedure TForm2. N3Click (Sender: TObject);    продолжение
–PAGE_BREAK–
begin
form1. close;
end;
procedure TForm2. Edit2Change (Sender: TObject);
begin
Button2. Enabled: =false;
end;
procedure TForm2. Edit1Change (Sender: TObject);
begin
Button2. Enabled: =false;
end;
procedure TForm2. Edit1KeyPress (Sender: TObject; var Key: Char);
begin
if ( (Key >= ‘0’) and (Key
else
Key: = #0; // нецифра
end;
procedure TForm2. Edit2KeyPress (Sender: TObject; var Key: Char);
begin
if ( (Key >= ‘0’) and (Key
else
Key: = #0; // нецифра
end;
procedure TForm2. Button2Click (Sender: TObject);
var
sum: integer;
begin
button3. Enabled: =true;
ns: =Strtoint (Edit3. Text);
k: =1+k;
a: =0;
b: =0;
Memo1. Lines. Add (”);
Memo1. Lines. Add (‘Игрок: ‘+ Label1. Caption);
a: =random (6) +1;
Memo1. Lines. Add (‘Первыйкубик= ‘ +inttostr (a));
b: =random (6) +1;
Memo1. Lines. Add (‘Второйкубик= ‘ +inttostr (b));
case (a) of
1: Image2. Picture. LoadFromFile (‘1. jpg’);
2: Image2. Picture. LoadFromFile (‘2. jpg’);
3: Image2. Picture. LoadFromFile (‘3. jpg’);
4: Image2. Picture. LoadFromFile (‘4. jpg’);
5: Image2. Picture. LoadFromFile (‘5. jpg’);
6: Image2. Picture. LoadFromFile (‘6. jpg’);
end;
case (b) of
1: Image3. Picture. LoadFromFile (‘1. jpg’);
2: Image3. Picture. LoadFromFile (‘2. jpg’);
3: Image3. Picture. LoadFromFile (‘3. jpg’);
4: Image3. Picture. LoadFromFile (‘4. jpg’);
5: Image3. Picture. LoadFromFile (‘5. jpg’);
6: Image3. Picture. LoadFromFile (‘6. jpg’);
end;
sum: =a+b;
Memo1. Lines. Add (‘Суммакубиков= ‘ +inttostr (sum));
if (sum=x) then
begin
ns: =ns+st*4;
Memo1. Lines. Add (‘Вывыиграли! Ваш выигрыш увеличин в 4 раза! =) ‘);
Animate1. Visible: =true;
Animate1. FileName: = (‘win. avi’);
Edit3. Text: =inttostr (ns);
v: =v+1;
end;
if (sum>x) then begin
ns: =ns-st;
Memo1. Lines. Add (‘Вы проиграли! = (‘);
Animate1. Visible: =true;
Animate1. FileName: = (‘loose. avi’);
Edit3. Text: =inttostr (ns);
p: =p+1;
end;
if (sum
ns: =ns+st;
Memo1. Lines. Add (‘Вывыиграли! =) ‘);
Animate1. Visible: =true;
Animate1. FileName: = (‘win. avi’);
Edit3. Text: =inttostr (ns);
v: =v+1;
end;
Memo1. Lines. add (‘Всегобросков: ‘ + Inttostr (k));
Memo1. Lines. add (‘Изнихвыигрышей/проигрышей: ‘ + Inttostr (v) + ‘ / ‘+Inttostr (p));
if ns
begin
form3. Showmodal;
end;
end;
procedure TForm2. N2Click (Sender: TObject);
begin
Form2. Hide;
form1. Show;
Button2. Enabled: =false;
Button2. Enabled: =false;
Memo1. Clear;
Edit3. Text: = (‘100′);
Edit1. text: = (’32’);
Edit2. text: = (‘6’);
k: =0;
p: =0;
v: =0;
form1. Edit1. Text: = (”);
end;
procedure TForm2. Button3Click (Sender: TObject);
begin
k: =0;
p: =0;
v: =0;
memo1. Clear;
Edit3. Text: = (‘100’);
end;
procedure TForm2. N5Click (Sender: TObject);
begin
form4. show;
end;
procedure TForm2. N6Click (Sender: TObject);
begin
Form5. show;
end;
procedure TForm2. Image1MouseMove (Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label5. Caption: = TimeToStr (Now ());
end;
end.
Form1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class (TForm)
Image1: TImage;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Image2: TImage;
Image3: TImage;
procedure Image2MouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
$R *. dfm}
procedure TForm1. Image2MouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image3. Visible: =true;
end;
procedure TForm1. Image2MouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
name: string;
begin
Image3. Visible: =false;
name: =Edit1. Text;
if ( (name = ”) or (name = ‘ ‘)) then
begin
ShowMessage (‘Введитеимя’);
end
else
begin
Form2. Show;
Form1. Hide;
Form2. Label1. Caption: =name;
end;
end;
end.
Form3
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm3 = class (TForm)
Image2: TImage;
Button1: TButton;
Button2: TButton;
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit2, Unit1;
{$R *. dfm}
procedure TForm3. Button1Click (Sender: TObject);
begin
Form2. N2. click;
Form3. Close;
end;
procedure TForm3. Button2Click (Sender: TObject);
begin
Form1. Close;
end;
end.
Заключение
Оба языка обладают своими преимуществами и недостатками. И нельзя строго о превосходстве одного над другим — все зависит от того, какую задачу ставит перед собой программист. Так например Pascal более удобен для изучения, является более наглядным для новичков. (И первоначально он был создан как раз для обучения) Но С++ в свою очередь является более компактным, быстрее компилируется. За счет этого на С++ удобнее писать большие и более сложные программы, тогда как Pascal лучше предназначен для обучения и выполнения не самых сложных алгоритмов.
Использованная литература
А. Гусева. Учимся программировать: Pascal 7.0.
ФароновВ.В. Turbo Pascal. Учебный курс
Бьерн Страустрап. Введение в С++
Липман. С++ для начинающих
Эккель Б. Философия С++
ru. wikipedia.org/wiki/C++
ru. wikipedia.org/wiki/Pascal