Сделай Сам Свою Работу на 5

Выполнение программы простой структуры.





Структура программ на С++

Программа на 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 Все материалы защищены законодательством РФ.