Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Сравнительный анализ описания данных для различных языков программирования (Определение языка программирования С++)

Содержание:

Введение

Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.

Цель курсовой работы:

1) организация диалоговой программы и фиксирование в ходе её формирования всех ключевых компонентов программирования на языке Паскаль и Си (Delphi, C++ Builder).

2) закрепление навыков представления информации в программах на языках высокого уровня;

3) демонстрирование приобретенных в процессе исследование выдержки познаний, умений и навыков;

4) приобретение профессиональных компетенций.

1. Теоретическая часть

1.1 Определение языка программирования С++

Бьерн Страуструп вызволил объектно-нацеленный потенциал С посредством перенесения способностей классов Simula 67 в С. Сначала новый язык носил название «С с классами» и только лишь затем начал именоваться C++. Язык C++ добился известности, будучи разработанным в Bell Labs, позже он был перенесен в прочие индустрии и компании. На сегодняшний день это один из наиболее популярных стилей программирования в мире. C++ наследует как хорошие, так и плохие стороны С.

Бьерн Страуструп говорил: «Я разработал C++, записал его первоначальное определение и осуществил первую реализацию. Я предпочел и сформулировал нюансы проектирования C++, создал его главные возможности и отвечал за участь предложений согласно расширению языка, в комитете по типизации C++, — сообщает автор наиболее известного языка программирования. — Язык C++ многим должен стилю C, и язык C остается подмножеством языка C++ (однако в C++ ликвидированы несколько существенных брешей концепции типов C). Я кроме того сохранил средства C, которые считаются довольно низкоуровневыми, для того чтобы справляться с наиболее критическими системными задачами. Язык C, в свою очередность многим должен собственному предшественнику, BCPL; к слову, стиль комментариев // был взят в C++ из BCPL. Другим главным источником воодушевления был язык Simula67. Теория классов (с производными классами и виртуальными функциями) была позаимствована с него. Ресурсы перегрузки операторов и возможность помещения оглашений в любом месте, где может быть записана руководство, напоминает Algol68.

Название C++ разработал Рик Масситти. Наименование указывает в вторичную природу перехода к нему с C. «++» — это процедура приращения в C. Чуть более непродолжительное название C+ считается синтаксической ошибкой; помимо того, оно ранее существовало применено равно как название совершенно иного стиля. Специалисты семантики C обнаруживают, то что C++ хуже, нежели ++C. Названия D язык никак не приобрел, так как он считается расширением C и в нем никак не производится усилий исцеляться от трудностей посредством выбрасывания различных особенностей… Первоначально C++ был разработан, для того чтобы создателю и его товарищам никак не приходилось программировать в ассемблере, C или других современных языках высочайшей степени. Главным его назначением было совершить написание оптимальных программ наиболее легким и приятным с целью единичного разработчика программного обеспечения. Плана исследования C++ в бумаге ни в коем случае никак не существовало; план, документы и осуществление передвигались в то же время. Разумеется, внешний вид сокет C++ был прописан в C++. Ни в коем случае никак не было «Плана C++» и «Комитета по разработке C++». Поэтому C++ развивался и не прекращает совершенствоваться в абсолютно всех направлениях, чтоб справляться с трудностями, с какими встречаются юзеры, а кроме того в ходе дискуссий создателя с его приятелями и коллегами".
В стиле С++ целиком удерживаются основы объектно-нацеленного программирования, в том числе 3 кита, в каковых оно нужно: инкапсуляцию, наследование и полиморфизм. Инкапсулирование C++ удерживается с помощью формирования необычных (пользовательских) видов сведений, именуемых классами. Язык С++ удерживает наследование. Это значит, то что возможно заявить новый вид сведений (класс), что считается расширением имеющегося.
Хотя речь С++ объективно именуют продолжением С и каждая работо-даровитая проект в стиле С станет поддерживаться компилятором С++, при переходе от С к С++ был сформирован крайне значительный скачок. Язык С++ одолевал с собственного родства с языком С в протяжение многочисленных лет, поскольку многочисленные программисты выявили, что для того, чтобы в абсолютной мере использовать преимуществами языка С++, им необходимо отказаться с отдельных собственных прошлых познаний и купить новые, а именно: исследовать новый метод концептуальности и решения трудностей программирования. Пред этим равно как приступать изучать С++, Страуструп и большая часть иных программистов, использующих С++ полагают изучение языка С факультативным.
C++ в сегодняшний день время считается доминирующим языком, применяемым для исследования торговых товаров, 90% игр пишутся в С++ с применением DirectX.

1.2 Определение языка программирования Delphi

Delphi (Дельфи) -- Сфера программирования, использующая язык Object Pascal, созданный компанией Borland и первоначально исполненный в ее пакете Borland Delphi, с которого и приобрел в 2003 г. собственное нынешнее наименование.  По сути считается преемником языка Pascal с объектно-ориентированными расширениями. Собственную эпопею язык Object Pascal проводит с первых Turbo Pascal`ей созданных Никлаусом Виртом.

Язык Pascal, целиком установленный речь, был предложен Н. Виртом в завершении 70-х лет равно как хорошо организованный академический язык. Расширения, привнесенные в язык фирмой Borland, гнали 2 основные цели:

1) облегчение обрабатывания в языке строений, показывающих более популярные виды данных строки и комп.данные (к примеру, в язык был занесен новый вид сведений string);

2) осуществление в языке ключевых способностей объектно-направленных стилей программирования.

Последнее новшество вызвало значительной доделки синтаксиса стиля. В него существовали занесены новейшие основные фразы, синтаксические конструкции и виды сведений. Но представленный вид языка невозможно принять успешным, хотя бы потому, что в нем не полностью выполнены все механизмы объектно-ориентированного программирования. Например, отсутствуют подобные сильные ресурсы, как исключения и шаблоны. Имеется и прочие трудности в применении языка.

Pascal был исключительным в собственном семействе — некто обладал наиболее стремительный компилятор в обществе, безусловно и в нем впервые была изобретена методика формирования платформенно самостоятельных проектов, что обнаружила обширное применение в этом языке, как Java. Собственное название он приобрел в честь знаменитого французкого физика Паскаля. Позже, исследованием Pascal`ей увлеклась фирма Borland, с поддержкой которой Pascal стал в массовое изготовление. необходимо отметить, то что помимо Turbo Pascal фирмой издавался Borland Pascal, который выходил в свет несколько позже, нежели Turbo Pascal, однако в различие от него обладал крупными возможностями, как-то различные режимы компиляции программы, наиболее углубленный комплект функций. Таким образом, вариант за версией было выпущено 7 Turbo и Borland Pascal`ей.С возникновением Windows у Pascal`я возникла новейшая вариация — Turbo и Borland Pascal for Windows. Данная программа существовала не немного не правильнее обычного блокнота, разве что только числа показывала синим. Однако время шло, условия к качеству дизайна программ росли, а языки программирования сохранились всё теми же — Dos`овскими. И вот, в конечном итоге, фирмой Microsoft был осуществлен переворот в сфере практического программирования — ими впервые существовала сформирована зрительная концепция исследования практических проектов, какую они реализовали в Visual Basic. К новому эталону начали добавлять все языки программирования, не избежал своей участи и Pascal. В этот период, если разработчики Pascal`я в фирмы Borland в конечном итоге добрались вплоть до него — находился он достаточно в запущенном пребывании. Было пересмотрено и переделано большее число функций, добавлено, а точнее отметить основано, почти все. И в результате внесения оказались настолько большими, что разработчики создали, можно отметить, новый язык программирования. Собственное название новая концепция (Delphi) приобрела в честь миксолидийского мегаполиса Дельфы. Наименование существовало подобрано не просто так: городок Дельфы сопряжен с именованием господа мудрости и покровителем искусств Аполлона. Согласно преданию, главное святилище Аполлона было непосредственно в данном городке. Его жрицы-сивиллы толковали предсказания желающим узнать свою участь. Вот что обозначил управляющий исследовательной группы по исследованию концепции Delphi Чак Язджевски: «Название Delphi было предложено Денни Торпом в период одной мозговой атаки. Мы хотели, чтобы в фамилии концепции отразились оригинальные возможности провианта к работе с основами сведений, и Delphi как нельзя лучше перекликается с таким заслуженным именованием в данной сфере, как Oracle, согласно последней грани с целью тех, кому комбинация „Дельфийский Оракл“ о чем-то свидетельствует».
Так каждый год возникала новейшая версия Delphi, однако уже после пятой что-то случилось, и новейшая вариант никак не возникла в период. Обнаружилось, то что параллельно с разработкой новой версии Delphi, проводилась создание новейшего, Delphi-подобного языка программирования для Linux. Новый продукт приобрел наименование Kylix. Delphi проявил колоссальное воздействие в формирование концепции языка C# для платформы. NET. Многочисленные его компоненты и мировозренческие постановления вступили в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из основных создателей Дельфи, из компании Borland Ltd. в Microsoft Corp. Вариант 1 была специализирована с целью разработки под 16-ти разрядную платформу Win16; Версии с второй компилируют проекты около 32-х разрядную платформу Win32; Совместно с 6-й версией Delphi выпущена совместимая с ним по языку и библиотекам сфера Kylix, специализированная с целью компиляции проектов под операционную систему Linux; Версия 8 может производить б-шифр только с целью платформы. NET. Это первая среда, направленная в исследование много язычных дополнений (только для платформы. NET); Следующие версии (помечаемые годами выхода, а не порядковыми номерами, равно как данное существовало прежде) имеют все шансы формировать равно как дополнения Win32, так и б-код для платформы. NET; Delphi for. NET -- сфера исследования Delphi, а кроме того язык Delphi (Object Pascal), ориентированные в исследование дополнений для. NET. Первая версия полной сферы исследования Delphi для. NET -- Delphi 8. Она позволяла записывать дополнения только лишь для. NET.

В настоящее время, в Delphi 2006, можно записывать приложения для. NET используя обычную библиотеку классов. NET, VCL для. NET. Среда также дает возможность записывать NET-приложения на C# и Win32-приложения на C++. Delphi 2006 включает функции для написания простых приложений с применением библиотек VCL и CLX. Delphi 2006 поддерживает технологию MDA с поддержкой ECO (Enterprise Core Objects) версии 3.0. В марте 2006 года фирма Borland установила разрешение о прекращении дальнейшего улучшения интегрированных сред разработки JBuilder, Delphi и C++Builder по причине убыточности этого направления. Планируется продажа IDE-сектора фирмы. Категория приверженцев свободного программного обеспечения организовала получение денег для покупки у Borland прав на среду разработки и компилятор. Однако в ноябре того же года было принято разрешение отказаться от реализации IDE бизнеса. Тем не менее, разработкой IDE продуктов сейчас будет работать новейшая фирма -- CodeGear, которая станет финансово целиком под контроль в Borland. Borland продолжил улучшение IDE систем под именованием Turbo: Turbo Delphi, Turbo Delphi for. NET, Turbo C#, Turbo C++. А в марте 2007 года CodeGear порадовала юзеров перерожденной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового провианта Delphi 2007 for PHP. В России Borland Delphi появляется в завершении 1993 г. и сразу же покоряет обширную известность. Новые версии выходят практически каждый год. В них реализуются все без исключения новые специалиста, элементы и технологические процессы программирования. На самом деле, процедура исследования в Delphi максимально упрощен. В первую очередь это относится к созданию интерфейса, в который уходит 80% времени разработки программы. Вы попросту поселяете необходимые компоненты на поверхность Windows-окна (в Delphi оно именуется формой) и настраиваете их свойства с помощью особого прибора (Object Inspector). С его поддержкой возможно связать события этих компонентов (нажатие в кнопку, выбор мышью элемента в списке и т. д.) с кодом его обработки — и вот элементарное приложение готово. При этом создатель получает в свое распоряжение сильные средства отладки (вплоть до пошагового исполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), ресурсы коллективной работы над планом, в целом попросту не перечислить. Вы сможете формировать элементы ActiveX без использования Microsoft IDL, увеличивать способности web-сервера (скрипты в стороне сервера), почти ничего не зная о HTML, XML либо ASP. Можно формировать распределенные приложения на основе СОМ и CORBA, Интернет- и intranet-приложения, используя для допуска к сведениям Borland DataBase Engine, ODBC-драйверы либо Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологические процессы (multi-tiered) доступа к сведениям дает возможность создавать масштабируемые приложения (относительно слабо зависящие с сервера БД) за счет перенесения способов обработки данных (бизнес-правил) в среднее звено.
Как ранее рассказывалось прежде, в Delphi применяется язык Object Pascal, который регулярно расширяется и дополняется Borland. Язык в абсолютной мере удерживает все без исключения требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, игра удерживают только элементарное наследование, но зато интерфейсы имеют все шансы иметь сразу несколько предков. К числу отличительных черт языка необходимо причислить помощь обрабатывания исключительных ситуаций (exceptions), а кроме того перегрузку методов и подпрограмм (overload) в стиле C++.
К количеству успешных, на взгляд создателя, относится также помощь продолжительных строчек в формате WideChar и AnsiChar. Последний тип (AnsiString) позволяет применять все без исключения прелести динамического размещения информации в памяти без любых хлопот о её выделении и производству мусора Delphi делает это автоматически. Для почитателей свободного стиля программирования существуют раскрытые массивы, виды и вариантные массивы, позволяющие располагать в памяти все, что душе угодно и совмещать виды данных. Вы сможете формировать свои личные компоненты, импортировать ОСХ-компоненты, формировать стандарты планов и специалистов, формирующих заготовки проектов. Мало того, Delphi дает создателю интерфейс с целью взаимосвязи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE). Таким образом, вы сможете применять Delphi с целью создания как самых обычных приложений, в разработку которых нужно 2−3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

Одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux.

1.3 Сравнительная характеристика языков Delphi и C++

Данные языки программирования можно различать:

1) по структуре программы

Структура программ на Delphi и C++ похожа, в особенности ещё и потому, что использовала продукты одной и той же фирмы Borland: программа разделяется на заголовочную часть, раздел описаний и тело программы, состоящее из функций. В C++ не имеется точного разделения на заголовочную часть и раздел описаний, т.к. переменные можно объявлять, в отличие от Delphi, непосредственно в теле программы, что считается, несомненно, плюсом, хотя и небольшим. Помимо этого, С++ нет четкого распределения функции процедуры, как в Паскале, т.к. любая процедура представляется как функция, которая никак не возвращает практически никакого значения.

2) по типам данных и их описанию

Как уже было сказано, С++ переменные можно объявлять, в отличие от Delphi, прямо в теле программы, что упрощает ходпонимания исходного кода, а кроме того добавляет удобства программисту. Виды данных в С++ и Delphi схожи, в огромной степени зависят от версии компилятора. Компания Borland стремится как можно больше унифицировать типы данных в компиляторе С++ и Delphi Оба языка представлены объектно-ориентированными (опять же, это зависит от компилятора). Обаязыка поддерживают большие объемы данных, к примеру, массивы с большим количеством элементов.

3) по описанию основных операторов

Если взять, к примеру, операторы ввода-вывода на экран, в таком случае мы уже тут увидим принципиальное различие между этими 2-мя языками. В Паскале ввод-вывод предельно упрощается, предлагая разработчику программного обеспечения основные операции (чтение-вывод строки, чисел и т. д.). В Си же операции ввода-вывода считаются скорее универсальным, нежели удобным инструментом, направленным скорее на профессионала, нежели на начинающего.

4) по технологии создания программ

Учитывая то, что оба языка предоставляют сравнимые фундаментальные возможности (объектно-ориентированный подход, работа с большими объемами данных, возможность низкоуровневого программирования), то к ним применимы одинаковые технологии создания программ: структурное программирование, объектно-ориентированное программирование.

1.4 Сравнение указанных элементов языков согласно варианту

Задание: Файлы. Потоки. Стандартные и нестандартные.

1.4.1 Файлы и потоки в C++

Файлом называют способ хранения информации на физическом устройстве. Файл -- это понятие, которое применимо ко всему -- от файла на диске до терминала.

В C++ отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т. д. Эти устройства сильно отличаются друг от друга. Однако файловая система преобразует их в единое абстрактное логическое устройство, называемое потоком.

Текстовый поток -- это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).

Двоичный поток -- это последовательность байтов, которые однозначно соответствуют тому, что находится на внешнем устройстве.

Организация работы с файлами средствами C

Объявление файла: FILE *идентификатор;

Пример: FILE *f;

Открытие файла: fopen (имя физического файла, режим доступа)

Режим доступа -- строка, указывающая режим открытия файла файла и тип файла

Типы файла: бинарный (b); текстовый (t)

Значения и описания:

r Файл открывается только для чтения

w Файл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписан

a Файл открывается для записи в конец (для до записи) или создается, если не существует

r+ Файл открывается для чтения и записи.

w+ Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан

a+ Файл открывается для записи в конец (для до записи) или создается, если не существует

Например

f = fopen (s, «wb»);

k = fopen («h: ex. dat», «rb»);

Неформатированные файловый ввод-вывод:

Запись в файл: fwrite (адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);

Например: fwrite (& dat, sizeof (int), 1, f);

Чтение из файла: fread (адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла);

Например: fread (& dat, sizeof (int), 1, f);

Закрытие файла: fclose (имя логического файла);

Форматированный файловый ввод-вывод

1) Функции fgetc () и fputc () позволяют соответственно осуществить ввод-вывод символа.

2) Функции fgets () и fputs () позволяют соответственно осуществить ввод-вывод строки.

3) Функции fscanf () и fprintf () позволяют соответственно осуществить форматированный ввод-вывод и аналогичный соответствующим функциям форматированного ввода-вывода, только делают это применительно к файлу.

Файловый ввод-вывод с использованием потоков

Библиотека потокового ввода-вывода: fstream

Связь файла с потоком вывода: ofstream имя логического файла;

Связь файла с потоком ввода: ifstream имя логического файла;

Открытие файла: имя логического файла. open (имя физического файла);

Закрытие файла: имя логического файла. close ();

1.4.2 Файлы и потоки в Delphi

Работа с файлами в Delphi.

Технология работы с файлами в системе Delphi требует определённого порядка действий:

Прежде всего файл должен быть открыт. Система следит, чтобы другие приложения не мешали работе с файлом. При этом определяется, в каком режиме открывается файл — для изменения или только считывания информации. После открытия файла в программу возвращается его идентификатор, который будет использоваться для указания на этот файл во всех процедурах обработки.

Начинается работа с файлом. Это могут быть запись, считывание, поиск и другие операции.

Файл закрывается. Теперь он опять доступен другим приложениям без ограничений. Закрытие файла гарантирует, что все внесённые изменения будут сохранены, так как для увеличения скорости работы изменения предварительно сохраняются в специальных буферах операционной системы.

В Delphi реализовано несколько способов работы с файлами. Познакомимся со классическим способом, связанным с использованием файловых переменных. Файловая переменная вводится для указания на файл. Делается это с помощью ключевого слова File:

var F: File;

Описанная подобным способом файловая переменная признается как типизированной, и дает возможность работать с файлами с неизвестной структурой. Сведения считываются и вносятся побайтно блоками, объем которых указывается при открытии файла, вплоть от 1 байт. Но чаще используются файлы, состоящие из последовательности одинаковых записей. Для описания такого файла к предыдущему описанию добавляется указание типа записи:

var F: File of тип_записи;

В качестве типа могут использоваться базовые типы, или создаваться свои. Важно только, чтобы для типа был точно известен фиксированный размер в байтах, поэтому, например, тип String в чистом виде применяться не может, а только в виде String[N].

Данные, считанные из файла или записываемые в файл, содержатся в обычной переменной, которая должна быть того же типа, что и файловая. Поэтому сначала в программе лично я описываю нужный тип, а затем ввожу две переменные этого типа — файловую и обычную:

Для текстовых файлов тип файловой переменной в этом случае TextFile, а тип обычной — String.

Для открытия файла нужно указать, где он расположен. Для этого файловая переменная должна быть ассоциирована с нужным файлом, который определяется его адресом. Адрес файла может быть абсолютным, с указанием диска и каталогов ('C: Мои документы Мои рисунки FileName. ini'), или относительным, тогда он создаётся в папке с. exe файлом программы. Для задания относительного адреса достаточно указать имя файла с нужным расширением. Делается это оператором AssignFile:

AssignFile (SaveF, 'C: Мои документы Мои рисунки FileName. ini');

AssignFile (SaveF, 'FileName. ini');

Теперь файл должен быть открыт.

Открытие файла оператором Rewrite приведёт воссозданию файла заново, т. е. существующий файл будет без предупреждения уничтожен, и на его месте будет создан новый пустой файл заданного типа, готовый к записи данных. Если же файла не было, то он будет создан.

Открытие файла оператором Reset откроет существующий файл к считыванию или записи данных, и его указатель будет установлен на начало файла:

Rewrite (SaveF);

Reset (SaveF);

Каждый из этих операторов может иметь второй необязательный параметр, имеющий смысл для не типизированных файлов, и указывающий длину записи не типизированного файла в байтах:

Rewrite (SaveF, 1);

Reset (SaveF, 1);

Чтение файла производится оператором Read:

Read (SaveF, SaveV);

Запись в файл производится оператором Write:

Write (SaveF, SaveV);

При этом чтение и запись производится с текущей позиции указателя, затем указатель устанавливается на следующую запись. Можно проверить, существует ли нужный файл, оператором FileExists:

if FileExists ('FileName. ini')

then Read (SaveF, SaveV);

Принудительно установить указатель на нужную запись можно оператором Seek (SaveF, N), где N — номер нужной записи, который, как и почти всё в программировании, отсчитывается от нуля:

Seek (SaveF, 49); - установка указателя на 50-ю запись.

При последовательном чтении из файла рано или поздно будет достигнут конец файла, и при дальнейшем чтении произойдёт ошибка. Проверить, не достигнут ли конец файла, можно оператором EOF (аббревиатура End Of File), который равен true, если прочитана последняя запись и указатель находится в конце файла:

while (not EOF (SaveF)) do

Read (SaveF, SaveV);

Для текстовых файлов вместо Read и Write используются операторы Readln и Writeln, умеющие определять конец строки. В комментариях приведена процедура чтения текстового файла.

Оператор Truncate (SaveF) позволяет отсечь (стереть или, если хотите, удалить) все записи файла, начиная от текущей позиции указателя, и до конца файла.

В конце работы с файлом его необходимо закрыть. Это делается оператором CloseFile (SaveF);

Потоки в Delphi делают функцию имитации псевдопараллельной работы приложения. Как понятно, для организации многозадачности операционная система выделяет каждому приложению, выполняющемуся в настоящий момент, определённые кванты времени, длина и количество которых определяется его ценностью. Потому объём работы, который приложение может выполнить, определяется тем, сколько таковых квантов оно сумеет получить в единицу времени. Для операционной системы каждый поток является самостоятельной задачей, которой выделяются кванты времени на общих основаниях. Потому приложение Delphi, которое умеет сделать несколько потоков, получит больше времени операционной системы, и соответственно сумеет выполнить больший объём работы. Создать дополнительный поток в Delphi поможет объект TThread.

1. Мастер создания дополнительного потока в Delphi создаёт отдельный модуль, в рамках которого выполняется поток.

File -> New -> Other…

В результате будет создан модуль, содержащий заготовку кода, реализующего дополнительный поток Delphi.

2. Практическая часть

2. 1 Постановка задачи

Игра аналог телевизионного шоу «Поле чудес».

программа паскаль си язык

2. 2 Спецификация программы

Программа написана при помощи пакета программ Borland Delphi 7 и Borland C++Builder 6. Для установки программы достаточно скопировать папку с программой в нужный вам каталог. Для запуска программы нужно запустить файл Pole. exe (для C++) или файл Pole. exe (для Delphi)

Тестировалась на компьютере: AMD® Phenom II ® X4 955 BE @ 3. 20GHz 3. 20 ГГц, 8. 00 ГБ ОЗУ

ОС Windows 10 Pro

2.3 Блок-схема алгоритма решения задачи

Так как состав модулей и подпрограмм на обоих языках совпадает, то схема иерархии модулей и инструкция пользователя совпадают и имеют единое отображении для обоих языков, а также состав и содержание модулей на С++ и на Delphi совпадают, различия заключаются только в синтаксических особенностях языков.

2.4 Схема иерархии модулей

2.5 Спецификации подпрограмм каждого модуля

Таблица 1- Таблица спецификаций модулй программы

Имя

Назначение

Тип п/п

Параметры

Тип результата

Zastavka

1

Button1Click

Вызов формы первого раунда

Процедура

-

-

2

Button2Click

Выдает сообщение, содержащее информацию о правилах игры

Процедура

-

-

3

Button3Click

Закрывает форму

Процедура

-

-

Round1, Round2, Round3

1

FormShow

Выбор вопроса раунда, автоматический выбор режима ввода букв вручную.

Процедура

-

-

2

FormClose

Вызов форм, уточняющей хотите ли вы выйти, перезапустить программу либо не совершать действий

Процедура

-

-

3

RadioButton2Click

Переход к режиму ввода слова целиком

Процедура

-

-

4

Button1Click — Button33Click

Реакция программы на выбор буквы, в зависимости от сгенерированного вопроса.

Процедуры

-

-

5

Button34Click

Очищение введенного значения при режиме ввода слова целиком {18, 'www.gugn.ru'}.

Процедура

-

-

6

Button35Click

Отправка введенного значения на проверку при режиме ввода слова целиком.

Процедура

-

-

Final

1

FormShow

Выбор вопроса раунда, автоматический выбор режима ввода букв.

Процедура

-

-

2

FormClose

Вызов форм, уточняющей хотите ли вы выйти, перезапустить программу либо не совершать действий

Процедура

-

-

3

Button1Click — Button33Click

Реакция на выбор буквы, в зависимости от сгенерированного вопроса.

Процедура

-

-

4

Button34Click

Очищение введенного значения.

Процедура

-

-

5

Button35Click

Отправка введенного значения на проверку.

Процедура

-

-

Net_bukvi

1

Button1Click

Вызов формы вращения барабана

Процедура

-

-

Est_bukva

1

Button1Click

Вызов формы вращения барабана

Процедура

-

-

Baraban

1

Button1Click

Закрытие вспомогательных форм, переход к раунду

Процедура

-

-

2

FormCreate

Присвоение переменной значения 0

Процедура

-

-

3

Timer1Timer

Организация анимации вращающегося барабана, и смену значений панели, на которой в итоге появится значение очков на кону

Процедура

-

-

4

Button2Click

Отключение таймера, присвоение определенного значения очкам на кону

Процедура

-

-

5

FormShow

Включение таймера

Процедура

-

-

Viigriw

1

Button1Click

Закрывает приложение

Процедура

-

-

2

Button2Click

Запускает приложение сначала

Процедура

-

-

Porajenie

1

Button1Click

Закрывает приложение

Процедура

-

-

2

Button2Click

Запускает приложение сначала

Процедура

-

-

Spros

1

Button1Click

Закрывает приложение

Процедура

-

-

2

Button2Click

Запускает приложение сначала

Процедура

-

-

2.6 Инструкция пользователя

Таблица 2 — Таблица сообщений на событие пользователя

Причина

Текст сообщения

1

Нажатие кнопки «Об игре»

Правила игры: Вас ожидает 3 раунда и финал. В каждом раунде вы набираете очки за правильные буквы, если вы отвечаете на вопрос верно, переходите в следующий раунд. Если вы называете слово целиком, то получите 1500 очков. Если до финала вы набираете более 7000 очков, то вам становится видно несколько первых букв загаданного слова, назвать которое необходимо только целиком. Ограничение по ходам = 16 ходов. То есть если вы не угадали слово и уже выбрали 16 букв, вы проигрываете. Удачи!

2

В режиме выбора букв при правильном ответе

Вы верно ответили СЛОВО

3

В режиме ввода слова полностью

Ваш ответ верен

4

При попытке закрыть форму

Вы уверены, что хотите выйти? Данет

При запуске программы перед вами появляется основное окно программы, в котором предлагается начать игру, выяснить ее правила, или выйти из программы. При выбирании начать игру возникает форма вращения барабана, где вы должны поначалу приостановить вращение барабана, узнав тем самым очки, которые ставятся на кон. Затем нажав кнопку «ОК», вы переходите в форму первого раунда, где видите вопрос и стараетесь на него ответить. Автоматически стоит режим выбора букв по одной, при этом называя неверную букву, вы не получаете очки, а называя верную получаете. О том, есть ли такая буква в слове, вас оповещают соответствующие формы. Ограничение по ходам — 16. То есть если вы не угадает слово за 16 ходов, вы проиграете. Так же, в программе предусмотрен ввод слова целиком, выбрать который вы так же можете на форме раунда. В нем вы вводите буквы поочередно, ограничение такое же, 16 букв. При вводе более 16 букв, вы проигрываете. Если вы угадываете слово верно, вы переходите в следующий раунд. Второй и третий раунд подобны первому. В финале вам предстоит угадать слово, назвав его целиком. Ограничение — 10 букв. Если в ходе раундов вы набираете более 7000 очков, то получаете подсказку в виде указанных первых букв. Так же, из любого раунда вы можете покинуть приложение, либо перезапустить его.

Описание компонентов и форм

Для разработки приложения «Pole» используются две среды визуального программирования «Delphi» и «C++». Проект программы содержит 11 окон:

Zastavka — форма основного меню.

Рисунок 1 — Главное окно программы.

Компоненты Zastavka:

Button1-Выдает сообщение, содержащее правила игры

Button2-Вызов формы Round1

Button3-Выход из приложения

Label1-Надпись: «Вас приветствует игра»

Label2-Надпись «по мотивам телешоу»

Image1-Фоновое изображение.

Image2-Портрет Леонида Якубовича

Image3-Заставка поле чудес

Round1, Round2, Round3 — представляют собой соответственно 3 раунда игры и являются подобными формами.

Рисунок 2 — Вид формы в режиме «Выбора букв».

Рисунок 3 — Вид формы в режиме «Ввести слово целиком».

Компоненты Round1, Round2, Round3:

Button1-Button33 — Алфавит

Panel1-Панель, на которой расположен алфавит.

Panel2-Panel7 — Панели, на которых появляются отгаданные буквы.

Image1- Фоновое изображение

Image2- Изображение барабана

Panel8-Панель с количеством набранных очков

Label1-Label3- Вспомогательные надписи: «Вопрос раунда», «Вы отлично справились с вопросом предыдущего раунда», «Сейчас вам предложен вопрос раунда»

Label4 — Вопрос раунда. Он выбирается случайно из пяти вариантов. В зависимости от вопроса раунда заданы реакции на кнопки, обозначающие выбор буквы.

Label5 — Отражает выбранные буквы в режиме «Ввести слово целиком»

Label6 — Надпись: «Количество очков»

Button 34 — «Сказать» — передает значение Label5 на проверку правильности

Button 35 — очищает значение Label5.

Final — финальный вопрос игры.

Рисунок 4 — Форма финала игры.

Компоненты Final:

Button1-Button33 — Алфавит

Panel1-Панель, на которой расположен алфавит.

Panel2-Panel7 — Панели, на которых появляются отгаданные буквы.

Image1- Фоновое изображение

Image2- Изображение барабана

Panel2-Панель с количеством набранных очков

Label1-Label2- Вспомогательные надписи: «Поздравляем! Вы умник! Перед вами финальный вопрос», «Набранные очки»

Label3 — Вопрос финала. Он выбирается случайно из пяти вариантов. В зависимости от вопроса раунда заданы реакции на кнопки, обозначающие выбор буквы.

Button 34 — «Сказать» — передает значение Label3 на проверку правильности

Button 35 — очищает значение Label3.

Baraban-форма, которая симулирует вращение барабана путем случайной генерации очков.

Рисунок 5 — Форма вращения барабана

Компоненты Baraban:

Label1 — Надпись: «Очки на кону»

Panel1 — Количество очков, которые прибавятся в случае верно угаданной буквы.

Timer1- С его помощью организуется анимация вращения барабана и смена значений Panel1 при этом.

Image1- Изображение вращающегося барабана

Button 1 — «Стоп» — останавливает работу таймера, фиксирует значение очков, поставленных на кон

Button 2 — «ОК» — выход в форму раунда.

Net_bukvi- Форма, появляющаяся в результате неверно названной буквы.

Рисунок 6 — Форма «Нет такой буквы».

Компоненты Net_bukvi:

Image1-портрет Леонида Якубовича

Label1, Label2 — Надписи: «Подумайте еще», «Нет такой буквы»

Button1- открывает форму Baraban

Est_bukva — Форма, появляющаяся в результате верно названной буквы.

Рисунок 7 — Форма «Есть такая буква».

Компоненты Est_bukva:

Image1-портрет Леонида Якубовича

Label1, Label2 — Надписи: «Отлично!», «Есть такая буква!»

Button1- открывает форму Baraban

Viigriw — Форма, появляющаяся при выигрыше

Рисунок 8- Форма выигрыша.

Компоненты Viigriw:

Image1-портрет Леонида Якубовича

Label1, Label2 — Надписи: «Вы выиграли! Примите», «мои искренние поздравления»

Button1- «Выход» — закрывает приложение

Button2-«Сначала!"-закрывает приложение и открывает его вновь

Porajenie — Форма, появляющаяся в случае поражения

Рисунок 9- Форма поражения.

Компоненты Porajenie:

Image1-портрет Леонида Якубовича

Label1 — Надпись: «Печально, но вы програли»

Button1- «Выход» — закрывает приложение

Button2-«Сначала!"-закрывает приложение и открывает его вновь

Spros — форма, предлагающая перезапустить приложение или выйти из него. Открывается в результате попытки закрыть форму.

Рисунок 10-Форма, уточняющая, желаете ли вы выйти из программы.

Компоненты Spros:

Label1 — Надпись: «Может начать игру сначала?»

Button1- «Выход» — закрывает приложение

Button2-«Начать сначала"-закрывает приложение и открывает его вновь

2.7 Тестирование

Таблица 3 — Таблица тестов.

Последовательность действий

Результат

1

Верно названы все загаданные слова

Выигрыш

2

Неверна названа буква

Появление информативной формы

3

Верно названа буква

Появление информативной формы

4

Неверно названо слово раунда

Проигрыш

5

Попытка выхода из программы

Появление формы, предлагающей действия Выход, Отмена, Перезапуск

2.8 Результаты тестирования

Тест 1:

Рисунок 11 — Верно названо загаданное в первом раунде слово.

Рисунок 12 — Верно названо загаданное во втором раунде слово.

Рисунок 13 — Верно названо загаданное во втором раунде слово.

Рисунок 14 — Верно названо загаданное в финале слово.

Тест 2:

Рисунок 15 — Неверно названа буква

Тест 3

Рисунок 16 — Верно названа буква

Тест 4:

Рисунок 17 — Неверно названо слово, либо сработало ограничение по ходам

Тест 5

Рисунок 18 — Попытка выхода из программы

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

1 раунд:

Физик, который изобрел цикл работы современных ТЭС. — РЕНКИН

Физик, который открыл 3 яблочных закона. -НЬЮТОН

Чувство, толкающее людей на подвиги. -ЛЮБОВЬ

Книга о наборе символов языка. -АЗБУКА

Основной пород разрушающий инструмент в Газпроме. -ДОЛОТО

2 раунд:

Элементарная частица средней весовой категории-МЕЗОН

Город в Италии с второй, после Колизея, по величине ареной-КАПУЯ

Наиболее плотный нерадиоактивный элемент таблицы Менделеева-ОСМИЙ

Армянский национальный духовой инструмент из древесины абрикоса-ДУДУК

Турецкий национальный шашлык, готовящийся на углях. -ДОНЕР

3 раунд:

Мальчик — легендарный маг, выдумка Дж. Роулинг. -ПОТТЕР

Мальчик, ставший вожаком стаи волков по произведению Киплинга. -МАУГЛИ

Имя самого знаменитого мультяшного кролика. -РОДЖЕР

Нервнопаралитический яд из плодов лианы. -КУРАРЕ

Крепкий алкогольный напиток из побегов кактуса. -ТЕКИЛА

Финал:

Математическая функция, в честь которой в английском языке назван подшипник качения. -ЛОГАРИФМ

Британский ученый, внесший большой вклад в развитие механики и математики. -ЭЙЛЕР

Трещиноватая известняковая порода. –ДОЛОМИТ

Смесь магния, нафтеновой и пальмитиновой кислот. -ПИРОГЕЛЬ

Свойство жидкостей увеличивать вязкость с увеличением скорости сдвига. -РЕОПЕКСИЯ

Заключение

Язык С (читается «Си») создан в начале 70-х годов, когда Кен Томпсон и Дэннис Ритчи из Bell Labs разрабатывали операционную систему UNDC. Поначалу они создали часть компилятора С, затем применяли с целью компиляции остальной части компилятора С и, в конечном итоге, использовали полученный в результате компилятор для компиляции UNIX. Операционная система UNIX поначалу распространялась в начальных кодах на С среди университетов и лабораторий, а адресат мог откомпилировать первоначальный код в С в машинный код с помощью подходящего компилятора С.
Распространение исходного кода создало операционную систему UNIX уникальной; разработчик программного обеспечения имел возможность поменять операционную систему, а исходный код мог быть перенесен с одной аппаратной платформы на другую. На сегодняшний день стандарт POSIX определяет типичный набор системных вызовов UNIX, доступных в С, которые должны быть реализованы в версиях UNIX, представляющих POSIX-совместимыми. С был 3 языком, который создали Томсон и Ритчи в ходе создания UNIX; первыми 2-мя были, разумеется, А и В.
По сравнению с наиболее преждевременным языком -- BCPL, С был улучшен путем добавления типов сведений конкретной длины. К примеру, тип сведений int имел возможность применяться для создания неустойчивой с определенным количеством бит (как правило 16), в то время как тип данных long имел возможность применяться для создания целой неустойчивой с огромным числом бит (как правило 32). В отличие от иных языков высокого уровня, С имел возможность работать с адресами памяти непосредственно с помощью указателей и ссылок. Так как С сохранил способность прямого доступа к аппаратному обеспечению, его часто причисляют к языкам среднего уровня либо в шутку называют «мобильным языком ассемблера».
Что касается грамматики и синтаксиса, в таком случае С считается структурным языком программирования. В то время как многие современные программисты мыслят в категориях классов и объектов, программисты на С считают в категориях процедур и функций.В С можно установить собственные абстрактные типы данных, применяя основное слово struct. Подобно можно описывать личные единые типы (перечисления) и давать другие наименования имеющимся типам данных присутствие поддержки основного фразы typedef. В данном значении С считается скелетным стилем с эмбрионами объектно-ориентированного программирования. Обширное распространение языка C в разных видах пк (в некоторых случаях, именуемых аппаратными платформами) привело, к сожалению, к многим вариациям языка. Они были схожи, однако несовместимы друг с другом. Это было серьезной проблемой для создателей программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало понятно, что нужна обычная версия C. В 1983 г. ANSI (Американский Национальный Комитет Стандартов) сформировал технический комитет X3J11 для создания стандарта языка C (для того чтобы «обеспечить недвусмысленное и машинно-независимое определение языка»). В 1989 стандарт был
утвержден. ANSI скооперировался с ISO (Международной Организацией Стандартов), для того чтобы стандартизовать C в международном масштабе; совместный стандарт был размещен в 1990 г. и наименован ANSI/ISO 9899: 1990. Данный стандарт усовершенствуется вплоть до сих пор и поддерживается множеством компаний разработчиков компиляторов.

Список использованных источников

7. Павловская Т. А. C/C++: Программирование на языке высокого уровня: Учебник для вузов, Питер, 2012.

6. Паппас Крис Программирование на С и С++: [Учеб. пособие: Пер. с англ.] / Крис Паппас, Уильям Мюррей. — Киев: Ирина, 2009. — 318 с.

5. Елманова Н. З. Введение в Borland C++ Builder / Н. З. Елманова, С. П. Кошель — М.: Диалог-МИФИ, 2007. — 272 с.

4. Архангельский А. Я. Программирование в С++Builder 6 / А. Я. Архангельский. — М.: Бином, 2012. — 1151 с.

3. C++Builder 5: Рук. разработчика: [В 2 т.: Пер. с англ.] / Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт и др. — М.: Вильямс, 2001. — 824 с.

2. Программирование на С++/ В. П. Аверкин, А. И. Бобровский, В. В. Веснич и др.; Под ред. А. Д. Хомоненко. — СПб.: Корона принт, 1999. — 252 с.

1. Голицына О. Л. Языки программирования: учеб. пособие. Издательство: «ИНФРА-М, Форум», 2010.

Приложения

Приложение 1. Листинг программы С++

Zastavka

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

#include < vcl. h>

#pragma hdrstop

#include «Zastavka. h»

#include «Round1. h»

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

#pragma package (smart_init)

#pragma resource «*. dfm»

TForm1 *Form1;

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

__fastcall TForm1: :TForm1(TComponent* Owner)

: TForm (Owner)

{

}

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

void __fastcall TForm1: :Button1Click (TObject *Sender)

{

Form2-> ShowModal ();

}

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

void __fastcall TForm1: :Button2Click (TObject *Sender)

{

ShowMessage («Правила игры: Вас ожидает 3 рунда и финал. В каждом раунде вы набираете очки за правильные буквы, если вы отвечаете на вопрос верно, переходите в следующий раунд. Если вы называете слово целиком, то получите 1500 очков. Если до финала вы набираете более 7000 очков, то вам становится видно несколько первых букв загаданного слова, назвать которое необходимо только целиком. Ограничние по ходам = 16 ходов. То есть если вы не угадали слово и уже выбрали 16 букв, вы проигрываете. Удачи! =))) «);

}

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

void __fastcall TForm1: :Button3Click (TObject *Sender)

{

Close ();

}

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

Пример раунда игры

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

#include < vcl. h>

#include < iostream>

#pragma hdrstop

#include < stdlib. h>

#include «Round1. h»

#include «Zastavka. h»

#include «Est_bukva. h»

#include «Round2. h»

#include «Baraban. h»

#include «Net_bukvi. h»

#include «Porajenie. h»

#include «Spros. h»

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

#pragma package (smart_init)

#pragma resource «*. dfm»

TForm2 *Form2;

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

int k;

int sl;

int v;

__fastcall TForm2: :TForm2(TComponent* Owner)

: TForm (Owner)

{

}

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

void __fastcall TForm2: :Button18Click (TObject *Sender)

{

if (RadioButton2-> Visible==true) {

if (sl==1){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel2-> Caption="P";

k++; }

if ((sl==2)||(sl==3)||(sl==4)||(sl==5)) {

Form4-> ShowModal ();}

Button18-> Enabled=false;

if (k==6) {

if (sl==1) ShowMessage («Вы абсолютно верно ответили РЕНКИН»);

if (sl==2) ShowMessage («Вы абсолютно верно ответили НЬЮТОН»);

if (sl==3) ShowMessage («Вы абсолютно верно ответили ЛЮБОВЬ»);

if (sl==4) ShowMessage («Вы абсолютно верно ответили АЗБУКА»);

if (sl==5) ShowMessage («Вы абсолютно верно ответили ДОЛОТО»);

Form5-> ShowModal ();

} }

if (RadioButton2-> Visible==false)

Label3-> Caption=Label3->Caption+"Р";

v++;

if (v> 15) Form10->ShowModal ();

}

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

void __fastcall TForm2: :Button6Click (TObject *Sender)

{

if (RadioButton2-> Visible==true) {

if (sl==1){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel3-> Caption="Е";

k++; }

Button6-> Enabled=false;

if ((sl==2)||(sl==3)||(sl==4)||(sl==5)) {

Form4-> ShowModal ();}

if (k==6){

if (sl==1) ShowMessage («Вы абсолютно верно ответили РЕНКИН»);

if (sl==2) ShowMessage («Вы абсолютно верно ответили НЬЮТОН»);

if (sl==3) ShowMessage («Вы абсолютно верно ответили ЛЮБОВЬ»);

if (sl==4) ShowMessage («Вы абсолютно верно ответили АЗБУКА»);

if (sl==5) ShowMessage («Вы абсолютно верно ответили ДОЛОТО»);

Form5-> ShowModal ();

} }

if (RadioButton2-> Visible==false)

Label3-> Caption=Label3->Caption+"Е";

v++;

if (v> 15) Form10->ShowModal ();

}

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

void __fastcall TForm2: :Button15Click (TObject *Sender)

{

if (RadioButton2-> Visible==true) {

if (sl==1){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel4-> Caption="Н";

Panel7-> Caption="Н";

k++;

k++; }

Button15-> Enabled=false;

if (sl==2){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel2-> Caption="Н";

Panel7-> Caption="Н";

k++;

k++; }

if ((sl==3)||(sl==4)||(sl==5)){

Form4-> ShowModal ();}

if (k==6){

if (sl==1) ShowMessage («Вы абсолютно верно ответили РЕНКИН»);

if (sl==2) ShowMessage («Вы абсолютно верно ответили НЬЮТОН»);

if (sl==3) ShowMessage («Вы абсолютно верно ответили ЛЮБОВЬ»);

if (sl==4) ShowMessage («Вы абсолютно верно ответили АЗБУКА»);

if (sl==5) ShowMessage («Вы абсолютно верно ответили ДОЛОТО»);

Form5-> ShowModal ();

}}

if (RadioButton2-> Visible==false)

Label3-> Caption=Label3->Caption+"Н";

v++;

if (v> 15) Form10->ShowModal ();

}

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

void __fastcall TForm2 :: Button12Click (TObject *Sender)

{

if (RadioButton2-> Visible==true) {

if (sl==1){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel5-> Caption="К";

k++;

}

if (sl==4){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel6-> Caption="K";

k++; }

Button12-> Enabled=false;

if ((sl==2)||(sl==3)||(sl==5)) Form4-> ShowModal ();

if (k==6){

if (sl==1) ShowMessage («Вы абсолютно верно ответили РЕНКИН»);

if (sl==2) ShowMessage («Вы абсолютно верно ответили НЬЮТОН»);

if (sl==3) ShowMessage («Вы абсолютно верно ответили ЛЮБОВЬ»);

if (sl==4) ShowMessage («Вы абсолютно верно ответили АЗБУКА»);

if (sl==5) ShowMessage («Вы абсолютно верно ответили ДОЛОТО»);

Form5-> ShowModal ();

}}

if (RadioButton2-> Visible==false)

Label3-> Caption=Label3->Caption+"К";

v++;

if (v> 15) Form10->ShowModal ();

}

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

void __fastcall TForm2: :Button10Click (TObject *Sender)

{

if (RadioButton2-> Visible==true) {

if (sl==1){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel6-> Caption="И";

k++;

}

Button10-> Enabled=false;

if ((sl==2)||(sl==3)||(sl==4)||(sl==5)) Form4-> ShowModal ();

if (k==6){

if (sl==1) ShowMessage («Вы абсолютно верно ответили РЕНКИН»);

if (sl==2) ShowMessage («Вы абсолютно верно ответили НЬЮТОН»);

if (sl==3) ShowMessage («Вы абсолютно верно ответили ЛЮБОВЬ»);

if (sl==4) ShowMessage («Вы абсолютно верно ответили АЗБУКА»);

if (sl==5) ShowMessage («Вы абсолютно верно ответили ДОЛОТО»);

Form5-> ShowModal ();

} }

if (RadioButton2-> Visible==false)

Label3-> Caption=Label3->Caption+"И";

v++;

if (v> 15) Form10->ShowModal ();

}

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

void __fastcall TForm2: :Button1Click (TObject *Sender)

{

if (RadioButton2-> Visible==true) {

if ((sl==1)||(sl==3)||(sl==2)||(sl==5)){

Form4-> ShowModal ();

}

if (sl==4){

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Panel8-> Caption=StrToInt (Panel8->Caption)+StrToInt (Form6->Panel1->Caption);

Form3-> ShowModal ();

Panel2-> Caption="A";

Panel7-> Caption="A";

k++; k++;

}

if (k==6){

if (sl==1) ShowMessage («Вы абсолютно верно ответили РЕНКИН»);

if (sl==2) ShowMessage («Вы абсолютно верно ответили НЬЮТОН»);

if (sl==3) ShowMessage («Вы абсолютно верно ответили ЛЮБОВЬ»);

if (sl==4) ShowMessage («Вы абсолютно верно ответили АЗБУКА»);