Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі, Детальна інформація

Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі
Тип документу: Реферат
Сторінок: 11
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 26.2
Скачувань: 1268
begin

{1} readln(a,b,c); {припускаємо, що a<>0! }

{2} d:=b*b-4*a*c;

{3} if d>0 then

begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a)

end

else

if d=0 then x1:=-b/(2*a)

end.

Якщо при виконанні цієї програми задати значення змінних a, b, c, наприклад, відповідно 1, 3, 2, то справджується d>0, і обчислюються x1 і x2. Якщо задати значення 1, 2, 3, то умова d>0 хибна, обчислюється умова d=0, її значенням є false, і на цьому все закінчується. При значеннях 1, 2, 1 умова d=0 істинна, і обчислюється лише x1.

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

І останнє зауваження щодо структури операторів розгалуження. Розглянемо такий оператор:

if z>0 then if z>5 then k:=2 else k:=1

Хибності якої умови, z>0 чи z>5, відповідає else-гілка? Тобто чи є оператор

if z>5 then k:=2

оператором розгалуження в скороченій формі, чи він має повну форму

if z>5 then k:=2 else k:=1 ?

Відповідь на це питання дає наступне неформальне правило.

Будемо рухатися по тексту програми від слова else назад до найближчого слова if, пропускаючи при цьому складені оператори. Цьому слову if та хибності умови, записаної за ним, і відповідає else-гілка. Але якщо на шляху ми зустріли слово else, то за цим самим правилом спочатку відшукаємо відповідне йому if, і лише після цього продовжимо наши пошуки.

За цим правилом у останньому прикладі else-гілка k:=1 відповідає хибності умови z>5, а не z>0. В операторі

if z>0 then

begin readln(x); if x=0 then k:=1 end

else k:=5

else-гілка k:=5 відповідає хибності умови z>0, а не умови x=0, пропущеної у складеному операторі. За цим самим правилом у операторі

if x>0 then {квадранти перший або четвертий}

if y>0 then k:=1 else k:=4

else {квадранти другий або третій}

if y>0 then k:=2 else k:=3

The online video editor trusted by teams to make professional video in minutes