WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Мова програмування Тurbo Pascal 7.0. Оператори повтору. Оператори циклу - Контрольна робота

Мова програмування Тurbo Pascal 7.0. Оператори повтору. Оператори циклу - Контрольна робота

виконуватися дія operation, що коштує напроти цього значення. У випадку, якщо жодне значення в списку не збіглося із селектором, виконується дія після else.
Program listing2;
Var selector:char;
Begin
Writeln('1. Зберегти');
Writeln('2. Завантажити');
Writeln('3. Вийти');
readln(selector);
case selector of
'1': write('Ви вибрали меню "зберегти"');
'2': write('Ви вибрали меню "завантажити"');
'3': halt;
else write('Такого пункту немає в меню!');
readln;
End.
У цій програмі в якості operation були використані оператор write, що виводить на екран рядок. На його місці може стояти усе, що завгодно: підпрограма, процедура, функція і т.д.
Оператор циклу repeat аналогічний оператору while, але відрізняється від нього, по-перше, тим, що умова перевіряється після чергового виконання операторів тіла циклу й у такий спосіб гарантується хоча б однократне виконання циклу. По-друге, тим, що критерієм припинення циклу є рівність вираження константі true . За це даний оператор часто називають циклом з постусловием, тому що він припиняє виконуватися, як тільки умова, записана після слова until, виконається. Оператор циклу repeat складається з заголовка, тіла й умови закінчення.
Загальний вид: Repeat
. . . . .
until
Спочатку виконується тіло циклу, потім перевіряється умова виходу з циклу. У будь-якому випадку цей цикл виконується хоча б один раз. Якщо умова не виконується, тобто результатом вираження є False, то цикл активізується ще раз. Якщо умова виконана, то відбувається вихід з циклу. Використання операторних дужок, у випадку, якщо тіло циклу складається з декількох операторів, не потрібно.
Розглянемо дещо штучну задачу: написати цілочислову функцію з ім'ям pow для обчислення степеня an за довільним натуральним a і n 0. Задача має елементарне розв'язання: an=enlna, і в тілі функції достатньо написати pow:=round(exp(n*ln(a))). Проте невід'ємні степені цілих чисел є цілими, тому спробуємо обійтися без нецілих виразів із функціями exp і ln.
За означенням, an є a a ... a, тобто a0=1,ai=ai-1 a для i=1, 2, ... , n. Це підштовхує до спроби обчислення an шляхом багаторазового множення на a. Спочатку шуканий степінь p=1, і треба n разів умножити його на a. Після першого множення p=a, і треба n-1 разів умножити його на a тощо. Перед останнім множенням p=an-1. Таким чином,
спочатку p=1 і треба виконати n множень на a, і поки залишаються "невикористані" множники a, ми множимо p на a, одержуємо новий степінь p і запам'ятовуємо, що "невикористаних" множників стало менше на 1.
Остання фраза, власне, і є алгоритмом обчислення an. Перекладемо його на мову Паскаль.
Нам потрібні змінні p і a для збереження степеня і його основи, а також змінні n і k для збереження показника степеня й кількості "невикористаних" множників. Змінні a і n - параметри нашої функції, тому їх початкові значення тут не важливі. Тепер алгоритм можна уточнити:
p:=1; k:=n;
поки k>0 виконувати {залишилися "невикористані" співмножники}
begin p:=p*a; k:=k-1 end
Якщо перекласти на англійську мову слова поки і виконувати як while і do, то утвориться:
p:=1; k:=n;
while k>0 do{залишилися "невикористані" співмножники}
begin p:=p*a; k:=k-1 end
Але це вже Паскаль! Справа в тім, що вираз вигляду
while умова do оператор
називається while-оператором, або оператором циклу з перед-умовою. Вираз "while умова do" називається заголовком циклу, "оператор" - тілом. Ми б назвали while-оператор циклом з умовою продовження, але цей термін дотепер у літературі не з'являвся.
Опишемо семантику оператора циклу та прокоментуємо всі ці назви. Виконання оператора циклу починається з того, що обчислюється умова, записана в заголовку. Якщо вона істинна, то виконується тіло циклу і знову обчислюється умова. Якщо вона істинна, усе повторюється. Якщо ж при черговому обчисленні умова стає хибною, то тіло циклу не виконується і взагалі виконання оператора циклу на цьому закінчується. Зокрема, якщо при першому обчисленні умова хибна, то тіло циклу не виконується жодного разу.
Отже, обчислення умови й виконання тіла повторюється, тобто має циклічний характер. Можна сказати, що обчислення умови й виконання тіла утворюють цикл, як день і ніч, змінюючи одне одного, утворюють добу. Істинність умови веде до продовження виконання оператора циклу, хибність - до його завершення, тому умова називається умовою продовження. Вона також називається перед-умовою, оскільки з її обчислення починається черговий цикл. Останній цикл неповний - у ньому тільки обчислюється умова (і виявляється хибною).
Оператору з перед-умовою відповідає блок-схема, зображена на рис.4.1.
Повернемося до задачі. Послідовність операторів для обчислення an при a=2, n=3 задає процес
p:=1; k:=3;
обчислення умови k>0: true ;
p:=1*2; k:=3-1; {p=2; k=2}
обчислення умови k>0: true;
p:=2*2; k:=2-1; {p=4; k=1}
обчислення умови k>0: true;
p:=4*2; k:=1-1; {p=8; k=0}
обчислення умови k>0: false,
а при a=5, n=0 - процес
p:=1; k:=0;
обчислення умови k>0: false.
У вигляді коментарів тут указано стани пам'яті наприкінці циклів.
Запишемо, нарешті, функцію pow:
function pow(a, n:integer):integer;
var p, k: integer;
begin
p:=1; k:=n;
while k>0 do
begin p:=p*a; k:=k-1 end;
pow:=p
end;
Р
Список використаної літеатури
1. Бартків А.Б. та ін.Турбо Паскаль: Алгоритми і програми. -К.: Вища школа, 1992.
2. Джонс Ж., Харроу К. Решение задач в Турбо Паскаль. -М.:Финансы и статистика, 1991. -720с.
3. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное пособие. - М.: Нолидж, 1997. -432с.
4. Ян Белецкий. Турбо Паскаль с графикой для персональных компьютеров. -М.: Машиностроение, 1991. -320с.
Loading...

 
 

Цікаве