Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2018-01-28 | 182 |
5.00
из
|
Заказать работу |
|
|
С++Builder | Delphi | Тип |
Set | Set | Множество 1-32 байт |
String | String | Cтрока, подобная при работе строке Delphi |
SmallString | String[n] | Короткие строки в Паскале длиной до 255 символов |
AnsiString | AnsiString | Текстовая строка Delphi произвольной длины |
Variant | Variant | Любое значение |
TdateTime | TDateTime | Значение даты и времени в виде Float |
Currency | Currency | Значение денежной величины |
Рассмотрим отдельно эти типы.
Set реализуется шаблонным классом Set:
Set< < тип>,<мин.значение элемента множества>,<макс. значение(<=255) >>
Пример:
typedef Set <char, 'A','Z'> bolhiebukvi; // прописные латинские буквы
bolhiebukvi glasnie, soglasnie; // объявление множеств гласных и согласных
glasnie <<'A'<<'I'<<'E'; // заполнение множества гласными буквами
soglasnie <<'B'<<'C'<<'D'; // заполнение множества согласными буквами
// проверка принадлежности буквы ‘B’ принадлежности множеству glasnie
Label1->Caption=glasnie.Contains('А')?»Да»:»Нет»; // вывод «Да»
String реализуется в виде: String <список имен>. Эти строки могут использоваться в привычных операциях сцепления (+) и сравнения строк (==).
Внимание! Отсчет символов начинается не с нуля, а с единицы
Перечислим основные методы (имя строки и метод разделяются точкой) работы с этими строками:
ToDouble/ToInt ‑ перевод строки в вещественное/целое число.
c_str‑ возвращает указатель на символьный массив с исходной строкой.
Length, IsEmpty ‑ возвращает длину строки, признак пустой строки (True).
IsEmpty ‑ возвращает true, если длина строки нулевая.
Insert(i) ‑ вставка строки после i‑й позиции исходной строки.
Delete/SubString(i,n) ‑ удаление/выделение подстроки длиной n с i‑й позиции исходной строки (r=Label1->Caption.SubString(2,3)).
LastDelimiter‑ возвращаетпозицию последнего символа‑ограничителя. LowerCase/UpperCase ‑ перевод строки в нижний/верхний регистр.
|
Trim, TrimLeft/TrimRight ‑ убрать пробелы и управляющие символы в начале и в конце строки, только в начале/конце строки соответственно.
Format‑ форматирование строки, аналогично функции printf.
ToInt/ToDouble ‑ перевод числовой строки к целому/вещественному числу.
AnsiPos(s), Pos(s) ‑ возврат номера первого символа вхождения строки S.
Пример формирования и вывода фамилии, имени и отчества:
String Fio, Fam=«Иванов», Imj=«Иван»; Fio=Fam+’ ‘+Imj+’ ‘;
Fio.Insert(«Иванович»,Fio.Length()+1); Label1->Caption=Fio;
SmallString реализуется в виде: SmallString <длина> <имя строки>.
Пример: SmallString<30>Fam; Fam=«Иванов»; Label1->Caption=Fam;
AnsiString реализуется в виде:
AnsiString<имя переменной>[<длина>]. Этот тип эквивалентен типу String.
Пример:
AnsiString Fio, Fam=«Иванов», Imj=«Иван»; Fio=Fam+’ ‘+Imj+’ ‘;
Fio.Insert(«Иванович»,Fio.Length()+1); Label1->Caption=Fio;
Variant реализуется в виде: Variant <список имен переменных>.
Пример:
Variant Fam=«Иванов»,Dp=Date();//объявление универсальных переменных
Label1->Caption=Fam+DateToStr(Dp); // формирование и вывод метки
TDateTime реализуется в виде: TDateTime <список имен переменных>. Этот тип имеет структуру типа double, которая содержит в целой части значение даты (порядкового номера дня начиная с 30.12.1899), а в дробной ‑ значение времени (отсчитывая от 12:00).
Пример: TDateTime d=Date(); Label1->Caption=d+1; // дата на завтра
Currency реализуется в виде: Currency <список имен переменных>.
Currency Stoimoct=123565.15; Label1->Caption=Stoimoct;
Переменные‑константы задаются добавлением модификатора const и значений при объявлении этих переменных. Попытки изменить эти значения операторами присваивания будут обнаружены при компиляции.
Пример. const int a=1; /* переменная‑константа*/ a=2; // ошибка
Переопределение типа можно осуществить оператором typedef.
Пример переопределения типаlong double на новый тип vehhiclo:
typedef long double vehhiclo;vehhiclo a=1.2, b=1.6; // перемен. типа vehhiclo
Массивы
Массив - это набор объектов одинакового типа, доступ к которым осуществляется прямо по индексу в массиве. Обращение к массивам осуществляется с помощью указателей (pointers) (п.6.3).
|
Одномерный массив можно описать следующим образом:
<тип_данных> <имя_массива > [< размер>];
Используя имя массива и индекс, можно адресоваться к элементам массива: <имя_массива> [< значение_индекса >]
Значения индекса должны лежать в диапазоне от нуля до величины, на единицу меньшей, чем размер массива, указанный при его описании.
Пример: char fam [20]; // массив (строка) из 20 символов.
Двумерный массив можно описать следующим образом:
<тип_данных> <имя_массива> [<размер_1>] [< размер_2>];
Пример. int kol [30][20]; // таблица 30 на 20 чисел типа int.
Аналогично описываются массивы и больших размерностей.
Многомерные массивы располагаются в памяти так, что быстрее всего меняется последний индекс.
Начальные значения элементам массива можно присвоить при его объявлении в виде:
<тип имя_массива> [...] = {< знач-1>,< знач-2>,...,< знач-N >};
Если пользователь не указал в квадратных скобках размер массива, то компилятор сам задает размер массива по числу приведенных начальных значений в фигурных скобках.
Примеры инициализации одномерных массивов:
int data [5 ]={5, 4, 3, 2, 1}; float scores [ ] = {3.4, 2.7, 1.8, 6.9, -24.3};
char tovar [20 ] = {«Сапоги»}; // строка «Сапоги»
char prompt [ ] = {«Ответ:»}; // строка «Ответ:»
char prompt [ ] = {'О', 'т', 'в', 'е', 'т', ':', '\0' }; // строка «Ответ:»
Структуры (записи)
Структуры (записи) ‑ это группа логически связанных переменных. Объявление структуры имеет вид:
struct [<имя структуры>]
{ <тип поля 1> <имя поля 1>;
...
<тип поля n > <имя поля n>;
} [<список имен структурных переменных>] ;
Описание переменной структурного типа выглядит следующим образом: struct <имя структуры> < список переменных-записей>;
Имя структурной переменной (записи) можно указать и сразу при объявлении структуры перед правой фигурной скобкой.
Структурным переменным можно присваивать значения агрегатно (сразу по всей структуре), но их нельзя сравнивать на равенство или неравенство. К полям записи можно обращаться, указывая имя переменной-записи, имя поля и разделяя эти имена точкой.
Пример. type1 valuel = x.field1; type3.value3 = z.field3;
Если структуры являются глобальными или описаны, как static, внутри функции, то их, как и массивы, можно инициализировать непосредственно в месте описания. Начальные значения для каждой структуры задаются внутри набора фигурных скобок. Соответствие между константами и полями устанавливается по порядку записи. Это означает, что первая по порядку константа связывается с первым по порядку полем, вторая - со вторым и т.д.
|
Комбинируя структуры и массивы, можно строить универсальные и гибкие структуры данных.
Пример
struct stovar // объявление структуры под именем stovar
{ int kt; // код товара - целочисленная переменная
char nt [20]; // наименование товара - строка из 20 байтов
} // конец тела структуры
zstovar={1,”Сыр”}; // наименование переменной-записи и значения полей
stovar mzstovar [2]; // объявление массива записей типа stovar
mzstovar[1].kt=2; // задание значения поля kt второй записи массива
printf(«\n%d, %d %s»,zstovar.kt,mzstovar[1].kt,zstovar.nt); // вывод значений
Битовые поля задаются в виде:
<целочисленный тип> [<имя>]: <ширина в битах (<=64)>;
Раполагаются поля в памяти слева направо.
Пример.
struct vector {int i:2; int:2; unsigned j:4; long k:64;} a,b,c;
Объединения union
Объединения соответствуют типам вариантных записей языка Delphi и объявляются подобно структурам. Активным может быть только одно поле. Все поля перекрывают друг друга в памяти.
Размер объединения равен размеру наибольшего поля.
Пример:
union un {int i; float f; char c;} a,b; // объявление объединения
a.i=1; Label1->Caption=a.i; // использование поля i
a.f=12.34; Label2->Caption=a.f; // использование поля f
a.c='w'; Label3->Caption=a.c; // использование поля c
Перечисления enum
Перечисления служат для присвоения имен набору целых чисел (int), что повышает наглядность и надежность задания правильных значений переменной. Объявление имеет вид:
enum [<имя перечисляемого типа для объявления переменных>]
{ <имя 1>[=<значение 1>],...,<имя N>[=<значение N>] }
[<список имен перечисляемых переменных>];
По умолчанию значение первого элемента равно нулю, а значение следующего элемента списка на единицу больше.
Пример задания имен дням недели, начиная с понедельника:
int main(int argc, char **argv) // основная процедура
{ enum dninedeli {poned=1,vtor,sreda,hetv,pjtn,subb,vosk} den; // дни недели
den=vosk; // задание значения перечисляемой переменной den
if (den==vosk) printf(«Воскресенье %d день недели», den); getch(); // вывод
|
}
Основные возможности
Предпроцессор
В задачи предпроцессора входят: подключение (при необходимости) к данной программе внешних файлов, указываемых директивой #include, и выполнение его директив.
Директива #Include
Во многие программы подставляются один или несколько файлов, часто в самое начало кода главной программы main. Появление директив:
#include <файл_1>
...
#include «файл_n»
приводит к тому, что препроцессор подставляет на место этих директив тексты файлов: файл_1 файл_2 файл_n соответственно. Если имя файла заключено в кавычки, то включается файл пользователя. Если имя файла заключено в угловые скобки, то файл входит во внешние библиотеки C.
Директива #define
С помощью директивы #define, вслед за которой пишутся имя и значение макрооператора, оказывается возможным указать предпроцессору, чтобы он при любом появлении в исходном файле данного имени заменял это имя на соответствующее значение макрооператора (именованные константы (п. 1.1.1)).
Пример:
#define square (х) ((х)*(х)); /* задает замену символа square (аргумент) на значение (аргумент) * (аргумент) */
Пример:
#define рi 3.1415926; /* связывает идентификатор pi со значением 3.1415962 */
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!