Вирази, умовний оператор та оператор вибору у середовищі Delphi

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук

Тема уроку:

Вирази, умовний оператор та оператор вибору у середовищі Delphi

Тип уроку:

Пояснення нового матеріалу. Закріплення матеріалу.

Мета уроку:

Ознайомити учнів із поняттям виразу, та їх структурою.Навчити визначати типи значень виразів.

Критично мислити та виявляти помилки.Пояснити призначення умовного оператора та оператора вибору.

Навчити учнів використовувати їх.

Обладнання:

Комп’ютери, середовище для програмування.

Організаційний етап

Привітання з учнями.

Перевірка присутності учнів на уроці.

Повідомлення теми та мети уроку. Мотивація навчальної діяльності Сьогодні ми розглянемо поняття виразів, які дадуть нам розуміння того, яким чином здійснюються обчислення. Також ми навчимося складати програми, які зможуть "здійснювати вибір". Без цього зараз не працює жодна комп'ютерна програма.

Пояснення нового матеріалу

У математиці та програмуванні вирази використовуються дуже часто.

Вираз — конструкція для обчислення значення невідомої величини за допомогою одного або декількох операндів.

Операнд — це елемент виразу. Операндом може бути змінна, константне значення (наприклад конкретне число). Будь-яка формула алгебри чи геометрії, з якою ви стикалися є виразом, тому що дає можливість обчислити деяке значення через відомі операції, змінні, числа. В програмуванні ми вже зустрічалися із виразами на попередніх уроках, коли розглядали оператор присвоєння і вже знаємо, що зробить команда:

 a := 5;

Насправді синтаксис оператора присвоєння такий:

 <змінна> := <вираз>;

Операція додавання приймає два операнди: зліва і справа, а її результатом є сума значень цих двох операндів, отже виразом буде «5 + 1», «1.7 + 5», тощо. Те ж стосується і інших арифметичних та логічних операцій.

Поняття виразів тісно пов’язане із типами даних. Будь-який вираз повертає значення деякого типу. Тип зазвичай не вказується явно і визначається компілятором. Можливі такі варіанти:

•Вираз складається із єдиної змінної, в такому разі значенням виразу є той же тип, що і змінної

•Вираз містить оператор, для якого діють правила формування вихідного типу

•Виклик функції (розглядатиметься в наступних темах)

•Явно вказується тип виразу

З першим випадком усе просто:

 var
 a: integer;
 ...
 //«a» - вираз типу integer.

Другий випадок має місце коли ми використовуємо у виразах оператори.

Оператори +, -, * можуть приймати зліва і справа від себе вирази числових типів, як цілих, так і дробових. Якщо з обох сторін знаходяться вирази ціло-чисельного типу, то результатом є теж ціле число. Якщо хоча б з однієї сторони знаходиться дробове число, то результатом теж є дробове.

Оператор / в будь-якому разі повертає дробове число.

Оператори mod і div приймають лише цілі числа, і повертають значення ціло-чисельного типу.

Оператори not, and, or, xor приймають значення логічного типу і їх результатом теж є значення логічного типу.

Оператори =, <>, <=, >= приймають значення великої кількості різних типів, та повертають значення логічного типу. Таким чином, один вираз може поєднувати в собі підвирази різних типів. Наприклад Вираз «5» є цілочисельним. Вираз «5 + 0.5» є дійсно-чисельним, а вираз «5 + 0.5 <> 0» є логічного типу.

Завдання

1.Вказати тип виразів:

•5 + 7

•5 + 6.5

•5 + 6.0

•5 = 14

•(5 – 7) <= 50

•(5 < 8) and (1 < 5)

•10 / 3

•10 / 2

2. Вказати, які з виразів написані неправильно і вказати на помилки:

•5 + 3 = 10

•(1 < 3) and 4

•not(5 – 2)

•not(5 <= 2)

•not(7 + 4 = 11) – 5

•not(1 < 5) and (1 – 2 = -1)

•true or false

•true = false

(6 mod 2 = 0) = 5

Умовний оператор

По суті, будь-яка комп’ютерна програма не веде себе лінійно. В різних ситуаціях вона поводить себе по різному. Для цього потрібно дати їй можливість оцінити ситуацію і визначитись, що слід робити.

Для цього використовують умовний оператор.

Він буває двох видів: неповний і повний.

Неповний записується так:

 if <логічна умова>
   then <дія>;

Зміст його такий: якщо логічна умова набирає істинного значення, то виконується вказана дія, в інакшому випадку, ігнорується.

Повний вигляд:

 if <логічна умова>
   then <дія 1>
 else <дія 2>;

Якщо логічна умова набирає істинного значення, то виконується дія 1, в інакшому випадку, виконується дія 2. Зверніть увагу, що крапка з комою ставиться після завершення всього оператора. Якщо потрібно в секції then або else виконати більше однієї дії, то використовуються операторні дужки (begin .. end):

if <логічна умова>
  then begin
    <дія 1-1>;
    <дія 1-2>;
    ...
    <дія 1-n>;
  end
  else begin
    <дія 2-1>;
    <дія 2-2>;
    ...
    <дія 2-n>;
  end;

Наприклад

Задача

Вказати, чи більше задане користувачем число, за 158.

var
  a: integer;
begin
  readln(a);
  if a > 158
    then writeln(‘більше’)
    else writeln(‘менше’);
end.

Завдання

Запитати в користувача три числа a, b, c і вивести найбільше з них.

Оператор вибору

Інколи розгалуження в програмі слід зробити не на основі логічної умови, а на основі значення деякої змінної.

Наприклад

Якщо a = 1, то вивести “один”, якщо a = 2, то — “два”, … до п’яти. Якщо інше значення, то вивести “я не знаю”.

Використовуючи умовний оператор, матимемо запис:

if a = 1
  then writeln(‘один’)
  else if a = 2
    then writeln(‘два’)
    else if a = 3
      then writeln(‘три’)
      else if a = 4
        then writeln(‘чотири’)
        else if a = 5
          then writeln(‘п’’ять’)
          else writeln(‘я не знаю’);

Це, як ми бачимо, доволі не зручно. Для таких цілей існує оператор вибору.

case <змінна> of
  <значення 1>: <дія 1>;
  <значення 2>: <дія 2>;
  …
  <значення n>: <дія n>;
end;

Цей оператор розгляне вказану змінну, порівнюючи її із усіма переліченими значеннями. При співпадінні буде виконана відповідна дія. Якщо при декількох значеннях слід виконувати одну і ту ж дію, то значення можна писати через кому. Якщо слід виконувати деяку дію, якщо підходящого варіанта не знайшлося, то можна використовувати блок else. Якщо в якомусь блоці потрібно виконати декілька дій, то вони беруться між begin і end.

Наприклад, наша задачка матиме вигляд:

case a of
  1: writeln(‘один’);
  2: writeln(‘два’);
  3: writeln(‘три’);
  4: writeln(‘чотири’);
  5: writeln(‘п’’ять’);
  else writeln(‘я не знаю’);
end;

Завдання

Користувач вводить номер стану світлофора, а програма виводить кольори запалених у цей момент лампочок. Є 5 станів світлофора: червоний, червний+жовтий, зелений, мигаючий зелений, жовтий.

Домашнє завдання

1. Модернізувати програму таким чином, щоб під 6-им станом світлофора знову розумівся 1-ий, під 7-им — 2-ий і т. д.

2. Крім кольору «автомобільного» світлофора, виводити одночасно колір світла, яке зараз світиться для пішоходів.