Выполнение программы простой структуры.
Структура программ на С++
Программа на C++ состоит из объявлений (переменных, констант, типов, классов, функций) и описаний функций. Среди функций всегда имеется главная
- main - для консольных приложений (работающая с WIN32) или WinMain - для приложений Windows. Именно эта главная функция выполняется после начала работы программы. Функцию WinMain содержит головной файл проекта. Как и в Delphi, головной модуль проекта создается автоматически, и изменять его приходится только в исключительных случаях. Чтобы увидеть текст головного файла, надо выполнить команду Project/View Source.
Программы на С++ строятся по модульному принципу и состоят из множества модулей. Все объекты компонентов размещаются на формах. Для каждой формы C++ Builder создает отдельный модуль. Согласно принципам скрытия информации, обычно текст модуля разделяют на заголовочный файл интерфейса, который содержит объявления классов, функций, переменных и т. д., и файл реализации, в котором содержится описание функций.
Заголовочный файл имеет вид:
//------------------------------------------------------------------
#ifndef UnitlH #define UnitlH
//-----------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
// сюда могут помещаться дополнительные директивы // препроцессора (в частности include),
// не включаемые в файл автоматически
//------------------------------------------------------------------
// объявление класса формы TForm1 class TForml : public TForm {
_ published: // IDE-managed Components
// размещенные на форме компоненты TLabel *Label1;
TButton *Button1;
void_ fastcall Button1Click(TObject *Sender);
private: // User declarations
// закрытый раздел класса
// сюда могут помещаться объявления типов, переменных, функций,
// включаемых в класс формы, но недоступных для других модулей public: // User declarations
// открытый раздел класса
// сюда могут помещаться объявления типов, переменных, функций,
// включаемых в класс формы и доступных для других модулей
_ fastcall TForm1(TComponent* Owner);
};
//------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//------------------------------------------------------------------
// сюда могут помещаться объявления типов, переменных, функций,
// которые не включаются в класс формы;
// доступ к ним из других блоков возможен только при соблюдении
// некоторых дополнительных условий
#endif
Начинается заголовочный файл строками, первый символ которых - #.
С этого символа начинаются директивы препроцессора. Среди них наиболее важны директивы include. Эти директивы подключают в данный модуль указанные в них файлы.
Delphi Подключение файлов к данному модулю осуществляется в разделе Uses.
В частности, в заголовочный файл помещены директивы include, подключающие копии файлов, в которых описаны компоненты, переменные, функции, используемые в данном модуле. Однако для некоторых функций такое автоматическое подключение не производится. В этих случаях разработчик должен добавить соответствующие директивы include вручную. Например, если вы хотите в своей программе использовать математические функции, необходимо подключить библиотеку, содержащую эти функции, то есть вручную ввести директивы:
#include <math.h> // подключение библиотеки math.h #include <Math.hpp> // подключение библиотеки Math.hpp Примеры функций математических библиотек приведены в приложении 1.
После директив препроцессору следует описание класса формы - TForm1. Раздел_______________ published заполняется автоматически в процессе проектирования формы. В данном примере Вы видите объявления указателей на два компонента: Label1 типа TLabel и Button1 типа TButton. Там же Вы видите объявление функции Button1Click - обработчика события щелчка на кнопке Button1. Разделы private и public заполняются разработчиком. То, что объявлено в разделе public, будет доступно для других классов и модулей. То, что объявлено в разделе private, доступно только в пределах данного модуля.
Ниже предложения PACKAGE можно разместить объявления типов, переменных, функций, к которым при соблюдении ряда дополнительных условий будет доступ из других модулей, но которые не включаются в класс формы. Теперь рассмотрим текст файла реализации.
//------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop #include "Unit1.h"
//------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
// сюда могут помещаться дополнительные директивы // препроцессора (в частности include),
// не включаемые в файл автоматически
// объявление объекта формы Form1 TForm1 *Form1;
//------------------------------------------------------------------
// вызов конструктора формы Form1
_ fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// сюда можно поместить операторы,
// которые должны выполняться при создании формы }
//------------------------------------------------------------------
// сюда можно поместить объявления типов и переменных,
// доступ к которым из других модулей возможен только при // соблюдении некоторых дополнительных условий;
// тут же должны быть реализации всех функций, объявленных // в заголовочном файле, а также могут быть реализации любых // дополнительных функций, не объявленных ранее
void_ fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}
//-----------------------------------------------------------------
После автоматически включенных в этот файл директив препроцессора следует объявление указателя на объект формы, а затем вызов конструктора формы.
В файле реализации описываются тела всех функций, которые были объявлены в заголовочном файле, и тех, которые не были объявлены ранее. В нашем примере приводится обработчик кнопки Button1Click. При нажатии этой кнопки будут происходить закрытие формы и выход из программы.
5.1 Элементы языка C/C++
1) Алфавит языка который включает
· прописные и строчные латинские буквы и знак подчеркивания;
· арабские цифры от 0 до 9;
· специальные знаки “{},| []()+-/%*.\’:;&?<>=!#^
· пробельные символы (пробел, символ табуляции, символы перехода на новую строку).
2) Из символов формируются лексемы языка:
· Идентификаторы – имена объектов C/C++-программ. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются.
· Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов.
· Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.
· Константы – это неизменяемые величины. Существуют целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.
· Разделители – скобки, точка, запятая пробельные символы.
5.2 Основные типы С++
В программе на языке C++ все переменные должны быть объявлены, т.е. для каждой переменной должен быть указан ее тип. Все типы языка C++ можно разделить на две большие группы: основные типы и производные. К основным относятся char, int, float и double, а также их варианты с модификаторами short (короткий), long (длинный), signed (со знаком, подразумевается по умолчанию и обычно не пишется) и unsigned (без знака).
char –символьный тип переменных;
int – целочисленный тип;
float, double – вещественный тип
Например:
int a,b,c short t;
double d;
unsigned int i;
a=17;
b=-197;
c=0xa7c;
t=-32767;
d=2,556;
ui=0xff;
double g;
g=-0.123E-3;
Объявлять переменные можно в любом месте программы перед их использованием.
Производные типы включают в себя указатели и ссылки на какие-то типы, массивы каких-то типов, типы функций, классы, структуры.
Пользователь может сам вводить в программу свои собственные типы. Синтаксис объявления типа:
typedef определение_типа имя_типа;
Например, оператор
typedef double Ar[10];
объявляет тип пользователя с именем Ar как массив из 10 действительных чисел. В дальнейшем этим типом можно пользоваться при объявлении переменных. Например:
Ar A = {1,2,3,4,5,6,7,8,9,10};
Определение переменной может сопровождаться ее инициализацией, т.е. заданием значения данной переменной, как в приведенном выше примере.
5.3 Операции языка С
5.3.1 Арифметические операции
Операции сложения, вычитания, умножения и деления действуют так же, как и в других языках программирования. Операции выполняются слева направо, т.е. сначала вычисляется значение левого операнда, затем значение правого операнда. Если операнды имеют один тип, то результат будет иметь тот же тип. Поэтому, если операция деления / применяется к целым переменным, то результат будет тоже целым.
Язык С имеет еще две операции, которых нет в других языках. Это унарные операции ++ (инкремент) и — (декремент). Унарной называется операция,
которая имеет только один операнд. Операция ++ добавляет единицу к операнду, операция — вычитает единицу из операнда. Обе операции могут следовать перед операндом (префиксная форма записи) и после операнда (постфиксная форма записи). При префиксной форме переменная сначала увеличивается или уменьшается на единицу, а затем это ее новое значение используется в том выражении, в котором она встретилась. При постфиксной форме в выражении используется текущее значение переменной и лишь затем переменная увеличивается или уменьшается на единицу. Три написанные ниже оператора дают один и тот же результат, но имеют различие при использовании в выражениях: i = i+1; ++i; i++;
Например, в результате выполнения операторов int i = 1, j; j = i++ * i++;
значение переменной i будет равно 3, а значение переменной j равно 1.
Если изменить эти операторы следующим образом: int i = 1, j;
j =++ i * ++i;
то результат будет другим: значение i будет равно 3, а значение j равно 9.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|