Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

ЛАБОРАТОРНА РОБОТА № 2 Розгалуження в мові Pascal



 

Мета заняття: дати поняття про структурні оператори, вказівку розгалуження (повну та скорочену форми) і поняття про прості та складені умови, навчити складати алгоритми з використанням команди розгалуження та записувати їх мовою програмування.

Теоретичні відомості

Структурні оператори являють собою угрупування, побудовані з інших операторів за чітко визначеними правилами. Всі структурні оператори поділяються на три групи:

- складені;

- умовні;

- повтору.

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

Формат опису:

Begin

<оператор >;

<оператор >;

end;

Складений оператор сприймається як єдине ціле і може знаходитися в будь-якому місці програми.

Умовні оператори- забезпечують виконання або невиконання деякого оператора, групи операторів або блоку залежно від заданих умов. Використовуються умовні оператори в таких алгоритмах, де можливі кілька варіантів розв'язання задачі залежно від початкових умов. У мові Паскаль можливе використання двох умовних операторів: if та case.

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

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

Перша (або повна) форма:

if < умова >

Then

Begin

<дія 1>;

End

Else

Begin

<дія 2>;

end;

умова
дія 1
так
ні
дія 2

 


Рисунок 1 – Схема алгоритму конструкції IF – ELSE.

 

Друга (або скорочена) форма команди розгалуження:

if < умова >

Then

Begin

<дія >;

end;

умова
дія
так

 


Рисунок 2 – Схема алгоритму конструкції з одиночним IF.

 

У повній формі команди умовного переходу виконується <дія 1>, якщо умова істинна, і <дія 2>, якщо вона хибна. В скороченій формі серія виконується тільки у випадку, якщо умова істинна, інакше команда розгалуження закінчується і виконується наступний за нею оператор.

Один оператор ifможе входити до складу іншого. У цьому випадку говорять про вкладеність операторів. При вкладеності операторів кожне elseвідповідає then, що йому передує.

Умова — вираз булівського типу, тобто це речення, на яке можна відповісти «так» або «ні». Умова може бути простоюабо складеною. Складені умови утворюються з простих за допомогою логічних операцій and, or, not, причому очевидно, що службове слово or використовується, якщо необхідне виконання хоча б однієї умови, а службове слово and - якщо необхідне одночасне виконання всіх умов.

Наприклад. Ми отримуємо подарунок від батьків на одне зі свят: день народження, Новий рік або День Святого Валентина. Отже, якщо сьогодні один з перелічених днів (мій день народження або1 січня або14 лютого), я отримаю подарунок. При цьому очевидно, що не обов'язково народжуватися на Новий рік або на День Святого Валентина.

Службове слово notвиконує заперечення умови, тобто, якщо вона була істинною, то стає хибною і, навпаки: якщо була хибною — стає істинною. Наприклад, якщо на вулиці не(англійською not) йде дощ, то я залишу вдома парасольку. В цьому випадку «йде дощ» - умова, яка може бути істинною чи хибною в залежності від погоди на вулиці. А слово незаперечує цю умову, тобто робить її хибною, якщо дощ дійсно йде, і навпаки — істинною, якщо дощу немає.

При написанні програм мовою Паскаль у записі умов можуть використовуватися всі можливі операції відношення (дорівнює, не дорівнює, менше, більше, не більше, не менше тощо). Результат виразу має булівський тип. Наприклад:

(х > 4) and (x < 10)

При х = 5 ця умова буде істинною, а при х = 25 — хибною.

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

Цей оператор є узагальненням оператора if і дозволяє зробити вибір із довільного числа наявних варіантів. Він складається з виразу, що називається селектором, і списку параметрів, кожному з яких передує список констант вибору (список може складатися і з однієї константи). Як і в операторі ifтут може бути присутнім слово else, що має той же зміст.

Формат опису:

case < вираз-селектор > of

< список констант вибору1 > : < оператор 1 >;

< список констант вибору 2 > : < оператор 2 >;

. . . .

< список констант вибору n > : < оператор n >

else < оператор >

end;

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

Селектор повинен відноситися до одного з перелічувальних типів (цілого, булівського або літерного). Дійсні та рядкові типи використовувати в якості селектора заборонено. Список констант вибору складається з довільної кількості значень або діапазонів, відділених один від одного комами. Межі діапазону записуються двома константами через складений символ діапазону «..». Тип констант у будь-якому випадку повинен збігатися з типом селектора.

 

 

Приклад № 1

Обчислити значення логічних виразів.

1) х<у

При х = - 2.5, у = 0.1 ця умова буде істинною.

2) a and not (b — с)

При а = false, b =false, c = true умова буде хибною (false), тому що при з'єднанні двох умов службовим словом and, якщо одна з умов хибна, то й вся умова хибна. Дійсно, якщо хоч одна з умов, поєднаних словом «та», не є істинною, то й весь логічний вираз буде хибним.

3) not (a and b) or b = a

При а = true, b = falseця умова буде істинною, тому що (a and b) — хибна (одна з умов хибна); not (a and b) — істинна (заперечність хибності); not (a and b) or b = a — істинна (бо якщо з двох поєднаних службовим словом orумов хоч одна істинна, то весь вираз істинний).

4) not (a and (x < у)) or (x < 0)

При а = true, x = -0.1, у = 0.7умова буде істинною, тому що друга з умов (х < 0) буде істинною, а при з'єднанні двох умов службовим словом orдостатньо одній з них бути істинною, щоб весь логічний вираз був істинним (тобто значення умови (not (a and (x < у))) можна не обчислювати).

Приклад № 2

Записати у вигляді логічних виразів висловлювання, наведені нижче:

а) значення х не належить інтервалу (0; 1)

(х <= 0) or (х >= 1);

б) точка М(х,у) лежить у другій чверті координатної площини

(х < 0) and (у > 0);

в) точка М(х, у) лежить усередині або на межі одиничного круга з центром у початку координат

(sqr(x) + sqr(у) <= 1);

г) координати дійсного вектораx(xr xr xj утворюють неспадну послідовність і всі вони невід'ємні

(х1 <= х2) and (х2 <= хЗ) and (x1 >= 0) and (x2 >= 0) and (хЗ >= 0) ;

ґ) 3 > В > С > 0,1

(З > В) and (В >= С) and (C > 0.1) .

Приклад № 3

Записати за допомогою умовного оператора виконання дій:

а) дійсне значення х замінити абсолютною величиною

if х < 0

then x := -х;

б)менше з двох дійсних значень х та у (або будь-яке з них, якщо вони рівні) замінити нулем

if х < у

then х := 0

else у := 0;

в) присвоїти змінній х значення 0, якщо її початкове значення належало інтервалу (0,2)

if (0 <= х) and (x <= 2)

then x := 0;

Приклад № 4

Дано значення дійсних величин а, b, с. Знайти:

Min ((a + b + с) /2, 1/(а2 +l)+l/(b2 +l)+l/(c2 +1))

Використані у програмі змінні є очевидними і тому наводимо програму без пояснень.

Program Example_4;

Uses crt;

Var а, Ь, с : real;

Rezl, Rez2, Min : real; {а,Ь,с - вхідні дамі; Rezl, Rez2 - проміжні обчислення; Міn - результат виконання програми}

Begin

Clrscr; {Очищення екрану}

Write("Введіть числа а,b,с: ');

Readln(a,b,c);

Rezl:=(a + b + с) / 2;

Rez2:=sqrt(1/ (sqr (a) +1) + 1/ (sqr (b) +1) +1/ (sqr (c) +1)) ;

If Rezl<Rez2 Then Min:=Rezl

Else Min:=Rez2;

Writeln('Min=',Min:8:2);

Readkey; {Затримка зображення на екрані}

End.

Приклад № 5

Дано значення дійсної величини х. Визначити:

х-5

хг+х-2

Нагадаємо відоме правило: ділити на нуль не можна.

Program Example_5;

Uses crt;

Var X, Rezultat:real;

Begin

Clrscr; {Очищення екрану}

Write('Введіть значення X: ');

Readln(X);

If X*X*X+X-2<>0 Then

Begin

Rezultat:=(X-5)/(X*X*X+X-2);

Writeln('Rezultat=',Rezultat:8:2);

End

Else

Writeln('Обчислення неможливі - ділення на нуль!');

Readkey;

End.

Приклад № 6

При даному значенні х обчислити:

 

Для розв'язання цієї задачі необхідно пам'ятати, що не можна знайти квадратний корінь з від'ємного числа.

Program Example_6;

Uses crt;

Var X, Rezultat:real;

Begin

Clrscr;

Wrіte('Введіть значення Х: ');

Readln(X);

If (X>=1) and (X*X*X-sqrt(X-l)>=0) Then

Begin

Rezultat:=sqrt(X*X*X-sqrt(X-l));

Writeln('Rezultat=',Rezultat:8:2);

End

Else

Writeln('Обчислення неможливі - від'ємний підкореневий вираз!') ;

Readkey;

End.

Приклад № 7

За рейтинговою системою оцінка визначається таким чином: якщо загальний бал учня становить не менше 92% від максимального, то виставляється оцінка 12, якщо не нижче 70%, то — оцінка 8, якщо ж не нижче 50%, то — оцінка 5, в інших випадках - оцінка 2. Визначте оцінку учня, якщо він набрав N балів, а максимальне значення загального балу становить S. У цій задачі можна використати повну або скорочену форму команди розгалуження.

Розв'яжемо задачу за скороченою формою.

Program Example_7;

Uses crt;

Var N, S, Grade: integer; {N - бали, що набрав учень; S - максимальне значення сумарного балу; Grade - оцінка учня}

Begin

Clrscr;

Wrіte('Введіть максимальне значення сумарного балу, що може набрати учень: ');

Readln(S);

Write ('Введіть кількість балів, що отримав учень: ».) ;

Readln(N);

If (S<=0) or (N<=0) or (N>S)

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.