Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі, Детальна інформація
Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі
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
{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
© Referats, Inc · All rights reserved 2021