ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 1083
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
ЛР 1. Операторы и выражения Delphi
Управление жизненным циклом объекта
Ограничение видимости членов класса
Особенности объявления методов
Принадлежность к родительскому контейнеру
Размещение и размеры элемента управления
Видимость и активность элемента управления
ЛР5. Обработка клавиатурных событий и событий мышки
Операторы поразрядного сдвига
С отдельными битами значения способны работать операторы поразрядного сдвига SHLи SHR. Первый из операторов осуществляет сдвиг влево (после оператора указывается количество разрядов сдвига), второй — поразрядный сдвиг вправо.Влистинге1.4представленфрагменткода,демонстрирующийвозможностиоператоровсдвига.Листинг 1.4. Поразрядный сдвиг влевоvari:integer=1;beginwhiletruedo begini:=iSHL1;//сдвигвлевона1разрядWriteLn(i);ifi>=1024thenbreak;//выходизциклаend; readln; end.Если вы запустите программу на выполнение, то получите весьма нетривиальный результат. Операторсдвигаобрабатываетисходноезначение,равное1(вдвоичномпредставлении00000001). Каждый шаг цикла сдвигает единичку на одну позицию влево. В итоге на экране компьютера отобразится следующий столбик значений:2{чтовдвоичномпредставлениисоответствует00000010} 4 {00000100}8 {00001000}16 {00010000}32 {00100000}64 {01000000}ит. д.По сути, мы с вами реализовали программу, позволяющую возводить значение 2 в заданную степень.Можете провести эксперимент, приводящий к прямо противоположному результату. Для этого проинициализируйте переменную iзначением 2 в степени N (например, 210=1024), замените оператор SHLна SHRиперепишите условие выходаизцикла: ifi<1thenbreak.
Операторы отношения
Операторы отношения (неравенства) обычно применяются для сравнения двух числовыхзначений, в результате сравнения возвращаются логические значения true/false(табл. 1.3). Операторы отношения — желанные гости в условных операторах.Таблица1.3.Операторыотношения
| Оператор | Операция | Пример | Результат |
| = | Сравнение | 10=5 | false |
| <> | Неравенство | 10<>5 | true |
| > | Больше чем | 10>5 | true |
| < | Меньше чем | 10<5 | false |
| >= | Больше или равно | 10>=5 | true |
| <= | Меньше или равно | 10<=5 | false |
Операторы множеств
ВсоставеDelphiпредусмотренрядоператоров,позволяющихосуществлятьоперациинад однотипными множествами (табл. 1.4).Таблица1.4.Операторымножеств| Оператор | Операция | Результат |
| + | Объединение | Новое множество |
| - | Разность | |
| * | Пересечение | |
| <= | Подмножество | Логическое значение |
| >= | Надмножество | |
| = | Равенство | |
| <> | Неравенство | |
| in | Членство |
typeTWeekDay=setof(Mo,Tu,We,Th,Fr,St,Su);varWD1,WD2,WD3:TWeekDay;beginWD1:=[Mo]; // присваивание, результат WD1=[Mo] WD2:=WD1+[Tu,We]; // объединение, результатWD2=[Mo,Tu,We] WD3:=WD2-WD1-[Tu];// вычитание, результат WD3=[We] WD3:=[]; //пустоемножество,результатWD3=[] WD1:=[Mo,Su];//пересечениеWD3:=WD1*[Mo,Tu,We,Th,Fr,St,Su];//результатWD3=[Mo,Su]ifWD1<>WD2thenbegin//проверканеравенства//...end;
ifMoinWD1thenbegin//проверкачленства//...end;end.Составнойоператорbegin..endВне зависимости от назначения разрабатываемого приложения программисту не обойтись без составного оператора begin..end. Задача оператора— указание начала и конца программного блока. Характерным примером подобного блока является создаваемый по умолчанию каркас кода консольного приложения, здесь весь исполняемый код заносится вовнутрь begin..end.Выражения, заключенные в рамки составного оператора, могут рассматриваться компиляторомкак составной оператор, подлежащий выполнению как единое целое. С одним из примеров использования составного оператора вы столкнетесь буквально на следующей странице (см. листинг 1.7).Условныйоператорif..then..elseУсловные операторы позволяют осуществлять выбор операции во время выполнения программы. В простейшем случае синтаксис команды выглядит следующим образом:if<логическоевыражение=true>then<выражение>;Операция подлежит выполнению только при условии, что логическое выражение истинно (возвращает true). Предусмотрен еще один, расширенный вариант применения условного оператора:if<логическоевыражение=true>then<выражение1>else<выражение2>;В последнем случае мы осуществляем выбор между двумя выражениями. При соблюденииусловия выполняется первая операция, в противном случае управление передается второй операции. Оба варианта применения условного оператора ifпредставлены на рис. 1.1 в виде фрагментов блок-схем.
if .. then
if .. then .. else
Рис. 1.1. Фрагмент блок-схемы if..then и if..then..else
Простейший пример работы с условным оператором представлен в листинге 1.6. Если A превышает 15, то в переменную B передается произведение переменной A на 15, в противном случае результатом окажется значение A-3.
Листинг 1.6. Демонстрация оператора if..then..else
If A>15 then B:=A*15
else B:=A-2;
В листинге 1.7 предложен более сложный фрагмент кода, демонстрирующий порядок работы с условным оператором. В нашем примере мы осуществляем расчет площади квадрата или круга.
Листинг 1.7. Совместная работа if..then..else с оператором begin..end
var S:Char;
X,Y:Double;
begin
WriteLn('Calculation area: "S" - square, "C" - circle'); ReadLn(S); //пользователь вводит символ "S" или "C"
if S='S' then begin
WriteLn('The side of square=?'); ReadLn(X);
Y:=X*X;
WriteLn('Area=',Y);
end else if s='C' then
begin