загрузка...
загрузка...
На головну

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

  1. VII. Организация и финансирование капитального ремонта многоквартирного дома при формировании фонда капитального ремонта у регионального оператора
  2. БАЗОВЫЕ ОПЕРАТОРЫ
  3. Взаимоотношения туроператора с поставщиками услуг размещения.
  4. Вимогидо вибору районів розміщення заміських зон
  5. Вложенные структуры условных операторов
  6. Встроенные операторы
  7. Выбор перевозчика, экспедитора или оператора

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

Case <порядкова змінна або вираз> of

<константа 1>:<оператор 1>;

<константа 2>:<оператор 2>;

...

<константа n>:<оператор n>;

[Else <оператор>; ]

End;

або

Вибір <порядкова змінна або вираз> із

<константа 1>:<оператор 1>;

<константа 2>:<оператор 2>;

<константа n>:<оператор n>;

[інакше <оператор>; ]

Кінець;

Виконання оператора вибору починається з обчислення виразу, який повинен мати значення порядкового типу. У випадку, коли результат обчислення дорівнює одній з перелічених констант, виконується відповідний оператор. Потім керування передається за межі оператора вибору. Якщо значення виразу не збігається з жодною із констант, то виконується оператор, що стоїть після Else, якщо він є, або керування передається оператору, що слідує за End.

Примітка.

1. Тип кожної з констант повинен збігатися з типом виразу. Можна задавати не тільки одну константу, а й список констант (див. приклад).

2. Гілка Else міститься у квадратних дужках, що говорить про те, що ця частина оператора вибору не обов'язкова.

3. У конструкції вибору (на відміну від умовного оператора) перед Else ставиться крапка з комою.

4. У якості операторів можуть використовуватися і складені оператори.

Приклад

Нехай при тестуванні учень отримав N балів з 20 можливих. Потрібно вивести суму балів з коротким коментарем.

Розв'язування

Program оцінка;

VarN :integer;

Begin

Read(N);

Case N of

20: WriteLn('Краще не буває!');

19,18,17 : WriteLn('Відмінно!');

16,15,14,13:WriteLn('Добре.');

12,11,10,9 :WriteLn('Задовільно.');

8,7:WriteLn('Ще трохи, і все було б в порядку.');

else

WriteLn('Як нічого не знаєте, то хоч би щось вгадали!')

end;

WriteLn('сума балів - ',N:2,' з 20 можливих');

end.

Питання для самоконтролю

1. В яких випадках використовується оператор вибору?

2. Який загальний формат запису оператора вибору?

3. Яких правил потрібно дотримуватись, використовуючи оператор вибору при розв'язуванні задач?

Задачі

1) Скласти програму, для визначення пори року за номером місяця. Перевірити коректність введених даних (якщо номер місяця не належить проміжку від 1 до 12 - вивести повідомлення про помилку).

2) Скласти програму, при виконанні якої, за номером дня тижня виводиться повідомлення про те який цей день: робочий чи вихідний.

3) Скласти програму, при виконанні якої, за номером дня тижня виводиться його назва.

1.6. Підготовка до оцінювання з тем

«Створення лінійних програм» та «Організація розгалужень»

1. Вкажіть правильно записані ідентифікатори:

а) 1xy; б) digit1; в) mas2;

г) a$; д) begin; е) -AB.

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

а) read(x, y, z); б) read x, y, z; в) read(x);

г) x := read(x); д) read(a; b); е) read(a, b+c);

3. Вкажіть правильно записані оператори виведення значень змінних:

а) write(x, y); б) write x, y, z; в) print x;

г) write(100); д) read(a; b); е) write(x, x+10,2);

4. Для виразів з лівого стовпчика виберіть правильну відповідь у правому стовпчику:

1) 8 div 3 а) 0

2) -13 div 2 б) -2

3) 2 div 5 в) 5

4) -13 mod 5 г) 2

5) -11 mod 3 д) 4

6) 5 mod 6 е) -3

ж) -6

5. Записати мовою Паскаль вираз: у=|х-4|+12.

6. Які з операторів записані правильно:

a). if a:=0 then a>0;

b). if a>0 then a:=0;

c). if 2*2=5 then WriteLn(2*2).

7. Які з операторів записані правильно:

a). if x><0 then y:=x-2 else y:=x+2;

b). if x=0 then y:=1024 else y:=x-1024;

c). if (x=0) or (y<>0) then y:=x;

d). if x=0 and a>0 then b:=a else b:=x;

8. Записати мовою Паскаль: якщо число є парним, то вивести «Так», інакше - вивести «Ні».

9. Записати мовою Паскаль формулу:

Практичні завдання

10) Скласти програму, при виконанні якої, за номером дня тижня виводиться повідомлення про кількість уроків в цей день.

11) Дано значення змінних a, b, c, які є довжинами трьох відрізків. Написати програму, що визначає, чи можна побудувати трикутник з відрізків заданої довжини.

12) Дано натуральне число N (N<=100), яке позначає вік людини. Додати до цього числа одне зі слів: «рік», «роки», «років», відповідно до норм української мови. Наприклад: 1 рік, 12 років, 52 роки.

1.7. Цикл із параметром

При складанні програм часто виникає необхідність багато разів повторити однин і той самий набір команд. У таких випадках застосовуються циклічні оператори, а команди, що повторюються, називають тілом циклу. Залежно від того, чи відома заздалегідь кількість повторень, розрізняють цикл з параметром та цикли з умовою.

Оператор циклу з параметром застосовують тоді, коли заздалегідь відоме число повторень певної послідовності операторів. Для підрахунку кількості повторень вводиться змінна-параметр одного з порядкових типів (integer, boolean, char тощо). Є дві форми запису циклу з параметром:

1. For <Параметр>:=A to B do <Тіло циклу>;

Для <Параметр>:=A до B виконати <Тіло циклу>;

2. For <Параметр>:=A downto B do <Тіло циклу>;

Для <Параметр>:=A назадДо B виконати <Тіло циклу>;

Де А - початкове значення параметра, В - кінцеве значення параметра, тіло циклу - оператор (простий або складений). Початкове й кінцеве значення параметра циклу можуть бути подані константами, змінними або виразами відповідного типу.

Розглянемо, як виконується оператор циклу з параметром виду

For <Параметр>:=A to B do <тіло циклу>;

Спочатку обчислюються значення виразів А і В. Якщо А≤В, то змінна-параметр послідовно набуває значень рівних А, А+1,..., в-1, В (тобто з кроком 1) і для кожного з цих значень виконується тіло циклу. Якщо на початку А>В, то тіло циклу не буде виконане жодного разу.

У випадку, коли параметр циклу потрібно зменшувати, використовується друга форма оператора із службовим словом downto. Цикл виконується так само, але значення параметра змінюється з кроком, що дорівнює -1.

Якщо потрібно повторити кілька операторів, то вони беруться в операторні дужки Begin-End(складений оператор).

По завершенні виконання оператора циклу з параметром значення змінної-параметра вважається невизначеним.

Приклад №1

З чисел від 10 до 99 вивести ті, сума цифр яких дорівнює N (0<N≤18).

Розв'язування

Позначимо через kчергове число, р1 - старшу цифру числа k, р2 - меншу цифру числа k, S -суму. Число k будемо друкувати лише в тому випадку, коли сума р1 і р2 дорівнюватиме S.

Program Example;

Var k,N,p1,p2,S:integer;

Begin

Write('N=');

Readln (N);

For k:=10 to 99 do

Begin

p1:=k div 10;{виділяємо старшу цифру}

p2:=k mod 10;{виділяємо молодшу цифру}

S:=p1+p2; {знаходимо суму цифр}

If S=N then writeln(k)

End

End.

У цій програмі цикл можна було записати коротше:

For k:=10 to 99 do

If k div 10+k mod 10=N then writeln(k);

Проаналізуйте його роботу самостійно.

Приклад №2

Знайти всі двоцифрові числа, що діляться на N або містять цифру N.

Розв'язування

Якщо двоцифрове число задовольняє умову задачі, то для нього виконується хоча б одна з трьох умов: перша цифра дорівнює N (p1=n) або друга цифра дорівнює N (p2=n), або саме число ділиться на N (k mod n = 0).

Яку логічну операцію необхідно використати для об'єднання цих простих умов у складену?

Питання для самоконтролю

1. В яких випадках використовуються циклічні оператори?

2. Які особливості запису циклу з параметром?

3. До якого типу даних належить змінна параметру циклу?

4. В яких випадках, при складанні циклу використовуються операторні дужки?

Скільки разів буде виконано тіло циклу в наступних фрагментах програм (по можливості, перевірте на комп'ютері):

5. For k:=-1 to 1 do ...

6. For k:=10 to 20 do...

7. For k:=20 to 10 do...

8. k:=5; r:=15;

For i:=k+1 to r-1 do...

9. k:=5; r:=15;

For i:=0 to k*r do...

10. k:=r;

For i:=k to r do...

11. Визначити значення змінної S після виконання таких операторів:

S:=0; N:=10;

For i:=2 to N do S:=S+100 div i;

12. Перевірте роботу даної програми на комп'ютері. Проаналізуйте використання циклу For:

Program Demo;

Var c:boolean;

Begin

For c:= false to true do

writeln(c);

End.

Задачі

1) Визначити кількість трицифрових натуральних чисел, сума яких дорівнює заданому числу N.

2) Знайти суму натуральних непарних чисел, що менші за 100.

3) Знайти суму цілих додатних чисел із проміжку від А до В, що кратні 4 (значення змінних А і В вводяться з клавіатури).

4) Знайти суму цілих додатних чисел, що більші за 20, менші за 100, кратні 3 і закінчуються на 2, 4 або 8.

5) *Скласти програму для піднесення до квадрату натурального числа, використовуючи таку закономірність:

12=1

22=1+3

32=1+3+5

42=1+3+5+7

.............

N2=1+3+5+7+9+...+2(N-1)

1.8. Розв'язування задач з використанням
циклу з параметром

Дільники числа

Поняття подільності числа А на деяке натуральне число В уперше зустрічається в "Арифметиці..." Л. ф. магницького, написаній в 1703 році. Найпростіший спосіб знайти всі дільники числа А - це перевірити по черзі подільність його на кожне з чисел 1,2,..., а. Для цього можна скористатися умовою:

A mod B = 0.

Легко перевірити, що в інтервалі від (A div 2) + 1 до А-1 дільників числа А немає. Тому дільники натурального числа А лежать в межах від 1 до А div 2. Отже, фрагмент програми для знаходження дільників числа А може мати вигляд:

Write ('Задайте ціле число:');

Readln (A);

For В:=1 to A div 2 do

If A mod B=0 Then Writeln (B,'-дільник числа ',A);

Для підрахунку кількості дільників використаємо лічильник К, який буде збільшувати своє значення на 1 при виконанні умови подільності (К:=К+1).

Також не складно переробити програму для знаходження суми дільників числа А. При виконанні умови подільності знайдений дільник В додається до змінної S, яка зберігає поточне значення суми (S:=S+В). Перед початком циклу змінну S потрібно зробити рівною 0.

Прості, досконалі та дружні числа.

Натуральне число А, більше від одиниці, називаєтьсяпростим, якщо воно ділиться лише на одиницю і саме на себе.

Досить підрахувати кількість дільників заданого числа та проаналізувати результат: якщо К=2, то число просте. Ще простіше визначити, чи виконувалась хоч раз умова подільності для "претендентів на звання дільника" - чисел від 2 до A div 2:

Write ('Задайте ціле число:');

Readln (A);

K:=0;

For В:=2 to A div 2 do

If A mod B=0 Then K:=K+1;

If K=0 Then Writeln (A,' - просте число.')

Else Writeln (A,' - складене число.');

Деякі властивості простих чисел ще не достатньо вивчені. Це спонукало Г. вейля до такого визначення:

"Прості числа - це такі істоти, які завжди схильні ховатися від дослідника".

Необхідно зазначити, що всі прості числа, крім 2, непарні. З цією категорією чисел пов'язане таке поняття, якчисла-близнюки, так називають два непарних простих числа, які відрізняються на 2.

Досконалими числами називають числа, рівні сумі своїх правильних (тобто менших від цього числа) дільників.

Стародавнім грекам були відомі лише чотири досконалих числа: 6, 28, 496, 8128. Видатний грецький філософ і математик Нікомах із Гераси (І ст. н. е.) писав:"Досконалі числа прекрасні. Проте відомо, що прекрасні речі зустрічаються рідко, а поганих усюди достатньо".

В ХІІ ст. церква запевняла, що для "спасіння душі" достатньо знайти п'яте досконале число. Воно було знайдене лише в XV столітті. До цього часу не знайдено жодного непарного досконалого числа, але й не доведено, що його не існує.

Скориставшись алгоритмом обчислення суми дільників, можна визначити чи є число досконалим (Наприклад: 6=1+2+3; 28=1+2+4+7+14) :

Write ('Задайте ціле число:');

Readln (A);

S:=1;

For В:=2 to A div 2 do

If A mod B=0 Then S:=S+B;

If S=A Then Writeln (A,'- досконале число.')

Else Writeln (A,'- не досконале число.');

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

Дружніми називаються два натуральних числа, кожне з яких дорівнює сумі правильних дільників іншого. Ця назва походить з легенди, в якій розповідається, що, коли Піфагора запитали, що таке дружба, він відповів:"220 та 284". Можна дати і інше визначення дружніх чисел: сума всіх дільників одного і другого такого числа рівна сумі обох чисел.

Питання для самоконтролю

1. Як знайти дільники заданого натурального числа А?

2. Яку функцію використовують, щоб визначити чи ділиться число А на число В без остачі?

3. Які числа називають простими. Наведіть приклади?

4. Які числа називають досконалими. Наведіть приклади?

5. Які числа називають дружніми. Наведіть приклади?

Задачі

1) Написати програму для знаходження всіх дільників заданого натурального числа А.

2) Написати програму для знаходження кількості дільників заданого натурального числа А.

3) Написати програму для знаходження суми дільників заданого натурального числа А.

4) Написати програму для перевірки, чи є задане натуральне число А простим.

5) Написати програму для перевірки, чи є задане натуральне число А досконалим.

6) Натуральне число з n цифр називається числом Армстронга, якщо сума його цифр, піднесених до n-го степеня, дорівнює самому числу (наприклад, 153=13+53+33). Відшукати всі числа Армстронга, що складаються з 3-х цифр.



  1   2   3   4   5   6   7   8   9   10   11   12   13   Наступна

Середовище програмування АЛГО | G, alfa, test17, x2y, _h1, | Символьний тип даних | Рядковий тип даних | Рrоgram Ехаmple; | Процедури для оформлення та виведення тексту | Програма-годинник | Практичне завдання | Початок | Початок |

загрузка...
© um.co.ua - учбові матеріали та реферати