- •19. Множества. Операции с множествами. Ввод, вывод множества
- •Преимущества и недостатки различных методов хранения структурированной информации: массивы, множества.
- •Среда визуального программирования Delphi. Элементы интерфейса среды Delphi. Проект Delphi.
- •22. Библиотека визуальных компонентов Delphi и её использование.
19. Множества. Операции с множествами. Ввод, вывод множества
Множество- неупорядоченная совокупность неповторяющихся объектов
Type<идентифик. типа>=set of<тип компонент>
Пример:
Type interval=5..10;
Mn set of interval;
Var pr:mn;
Ввод и вывод множества:
S:=[];
Readln(str);
For i=’a’ to ‘z’ do
If I in S then Write (i:30);
Операции:
Пересечение(*)
X=[1,2,3,4,7,9] Y=[1,2,3,10,5]
Z:=X*Y;
Z=[1,2,3]
Объединение(+)
X=[1,2,3,4,7,9] Y=[1,2,3,10,5]
Z:=X+Y
Z=[1,2,3,4,7,9,10,5]
Разность
X=[1,2,3,4,7,9] Y=[1,2,3,10,5]
Z:=X-Y Z=[4,7,9]
Проверка на равенство
F:=X=Y F=false
Проверка на неравенство
F:=X<>Y F=true
Проверка на включение
X=[1,2,3,4,5] Y=[1,2,3]
F:=X>=Y; F=true
IN проверка принадлежности
F=5 F:=A in Y F=true
24. Числовые константы языка С++. Символьные и строковые константы языка С++. Типы переменных в языке С++.
Константы
Константа |
Формат |
Примеры |
Целая |
Десятичный: последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль |
8, 0, 199226 |
Восьмеричный: нуль, за которым следуют восьмеричные цифры (0,1,2,3,4,5,6,7) |
01, 020, 07155 |
|
Шестнадцатеричный: 0х или 0Х, за которым следуют шестнадцатеричные цифры (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) |
0xA, 0x1B8, 0X00FF |
|
Вещественная |
Десятичный: [цифры].[цифры] |
5.7, .001, 35. |
Экспоненциальный: [цифры][.][цифры]{E|e}[+|–][цифры] |
0.2E6, .11e–3, 5E10 |
|
Символьная |
Один или два символа, заключенных в апострофы |
'A', 'ю', '*', 'db', '\0', '\n', '\012', '\x07\x07' |
Строковая |
Последовательность символов, заключенная в кавычки |
"Здесь был Vasia", "\tЗначение r=\0xF5\n" |
Основные (стандартные) типы данных:
int (целый); char (символьный);
wchar_t (расширенный символьный);
bool (логический);
float (вещественный);
double (вещественный с двойной точностью).
Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:
short (короткий);
long (длинный);
signed (знаковый);
unsigned (беззнаковый).
Таблица 1.4. Диапазоны значений простых типов данных для IBM PC |
||
Тип |
Диапазон значений |
Размер (байт) |
bool |
true и false |
1 |
signed char |
–128 … 127 |
1 |
unsigned char |
0 … 255 |
1 |
signed short int |
–32 768 … 32 767 |
2 |
unsigned short int |
0 … 65 535 |
2 |
signed long int |
–2 147 483 648 … 2 147 483 647 |
4 |
unsigned long int |
0 … 4 294 967 295 |
4 |
float |
3.4e–38 … 3.4e+38 |
4 |
double |
1.7e–308 … 1.7e+308 |
8 |
long double |
3.4e–4932 … 3.4e+4932 |
10 |
25. Числовые операции в языке С++. Логические операции в языке С++. Оператор присваивания в языке С++. Составной оператор в языке С++.
Математические операции
Знак |
Математическая операция |
* |
Умножение |
/ |
Деление и целочисленное деление нацело |
% |
Деление по модулю и остаток от деления |
+ |
Сложение |
- |
Вычитание |
Присваивание
В одной строке может стоять больше одной операции присваивания =.
Пример.
a=b=c=d=100;
Знак присвоить может стоять даже внутри математического выражения:
value=5+(r=9-c)
Присваивание имеет более высокий приоритет, чем сложение и вычитание. Поэтому сначала переменной r будет присвоено значение 9-с. А затем переменная value получит значение 5+9-с.
Составное присваивание
При написании программы часто требуется изменить значение переменной. Например, требуется взять текущее значение переменной, прибавить или умножить это значение на какое-то выражение, а затем присвоить это значение той же переменной. Такие операции выполняют операторы составного присваивания.
Операция |
Пример |
Эквивалент |
+ = |
B+ = 500; |
B= b+ 500; |
- = |
С- = 50; |
C = с - 50; |
* = |
D* = 1.2; |
D = d*1.2; |
/ = |
F/ = 50; |
f = f/.50; |
% = |
m% = 7; |
M = m% 7; |
Операции отношения
Операции |
Описание |
= = |
Равно |
> |
Больше |
< |
Меньше |
>= |
Больше или равно |
<= |
Меньше или равно |
!= |
Не равно |
Операции инкремента (++) и декремента (-)
В языке C++ предусмотрены две уникальные операции, которые увеличивают или уменьшают значение переменной на 1
Оператор |
Пример |
Описание |
Эквивалентное выражение |
+ + |
i + +; |
Постинкремент |
i =i+1; или i+=1; |
+ + |
+ + i; |
Преинкремент
|
i =i+1; или i+=1; |
- - |
i - -; |
Постдекремент |
i =i-1; или i-=1; |
- - |
- - i; |
Предекремент |
i =i-1; или i-=1; |
Префиксный и постфиксные операции различаются приоритетом. Префиксные операции имеют самый большой приоритет и выполняются до любой другой операции. Постфиксные операции имею самый маленький приоритет и выполняются после всех остальных операции.
Пример.
float a, b=2, c=1, d=1;
a = b + c++;
cout << "\n a=" << a <<"\t c= "<< c;
/* Даст результат a=3 c=2.
Используется постфиксный инкремент. Сначала произойдет сложение b и c, результат запишется в а, затем с будет увеличена на 1 */
Операция sizeof
sizeof (тип данных)
Операция sizeof возвращает размер в байтах указанного в ней данного или типа данных.
Пример.
cout " "Размер типа float в байтах=\t" "sizeof (float)
Результат: 4.
Операция "запятая"
Дополнительная операция (,) не работает непосредственно с данными, а приводит к вычислению выражения слева направо. Эта операция позволяет Вам использовать в одной строке несколько выражений, разделенных запятой.
Пример
main()
{
int i = 10,
j = 25;
}
Результат выполнения: j=20. Сначала i получает значение 10, затем использование операции "запятая" приведет к тому, что i получит значение 12, а затем значение i+8, т.е. 12+8=20. Результат будет присвоен j.
Оператор ?:
(Условие) ? (выражение1):(выражение2)
Если условие истинно, то выполняется выражение1, а если ложно, то выражение2.
Пример.
(а>b) ? (ans =10):(ans=25);
Если а>b, то переменная ans получается значение 10, иначе - значение 0.25
С и С++. Препроцессор языка С++. Основная функция в языке С++. Алфавит языка С++. Идентификаторы языка С++.
"ПРЕПРОЦЕССОР - это специальный блок транслятора (или специальная программа), подготавливающий обработку данных, поступающих на вход процессора".
Отметим, что препроцессор выполняет обработку программы только на уровне текста. Это значит, что на входе в препроцессор транслятора в тексте программы еще имеются препроцессорные директивы. На выходе из него препроцессорные директивы уже отсутствуют. Выходной текст программы изменяется, поскольку препроцессорные директивы уже выполнены.
Существует одно важное правило, которое нужно знать и учитывать. Согласно этому правилу, если имя файла в директиве #include <stdio.h> заключено в угловые скобки, то процессор Borland C/C++ ищет файл в стандартных системных каталогах.
Если же оно заключено в двойные кавычки, то вначале препроцессор просматривает текущий каталог пользователя и ищет файл в нем и только после этого приступает к поиску файла в стандартных системных каталогах.
Входит в состав компилятора и выполняет:
-макроподстановки, условную компиляцию, включение заголовочных файлов.
Работает с текстом и не анализирует синтаксис.
Строки начинающиеся со знак # - директивы процессора. У них свой независимый от языка синтаксис, они могут появляться в любом месте программы, их влияние распространяется до конца файла исходного текста программы. (Ex. #include #define.)
Алфавит языка
Алфавит С++ включает:
прописные и строчные латинские буквы и знак подчеркивания;
арабские цифры от 0 до 9;
специальные знаки:
"
{ }
,
|
[ ]
( )
+
-
/
%
*
.
\
'
:
?
<
=
>
!
&
#
~
;
^
пробельные символы: пробел, символы табуляции, символы перехода на новую строку.
Из символов алфавита формируются лексемы языка:
идентификаторы;
ключевые (зарезервированные) слова;
знаки операций;
константы;
разделители (скобки, точка, запятая, пробельные символы).
Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.
Идентификаторы
Идентификатор — это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются.
При выборе идентификатора необходимо иметь в виду следующее:
идентификатор не должен совпадать с ключевыми словами (см. следующий раздел) и именами используемых стандартных объектов языка;
не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных, и, кроме того, это снижает мобильность программы;
на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика (использование различных компоновщиков или версий компоновщика накладывает разные требования на имена внешних переменных).
Функция main.
Аргументы функции main (argc, argv и env) всегда передаются функции main подпрограммой инициализаци и Borland С++.
argc (тип integer) - число аргументов командной строки.
argv - массив указателей на строки (char *[]). В версиях DOS 3.x argv[0] - полное (т.е. включая маршрут доступа) имя запускаемой программы. argv[x] - параметр, набранный в командной строке после функции (порядковый номер - x).
env - также массив указателей на строки. Каждый элемент env[] содержит строку вида ENVVAR = value. Аргумент env доступен также через глобальную переменную environ. argc и argv также доступны через глобальные переменные _argc и _argv.