Тема роботи: Програмування розгалужених алгоритмів в середовищі програмування Turbo Pascal. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема роботи: Програмування розгалужених алгоритмів в середовищі програмування Turbo Pascal.



Мета роботи: дати навички студентам складати програми процесів з розгалуженням.

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

Рекомендована література.

1. Жалдак М.І., Рамський Ю.С. Інформатика: навч. Посібник.-К.: Вища шк.,1991 стр.233-237.

2. Вычислительная техника и программирование: Учеб. Для техн. вузов/ А.В. Петров, В.Е. Алексеев, А.С. Ваулин и др.; Под редакцией А.В. Петрова.- М.: Высш. Шк. 1990.-стр.233-234.

3. Епанешников, В. Епанешников Программирование в среде Turbo Pascal 7.0.-М.: «Диагог-МИФИ», 1993, стр.28-31.

4. ФароновВ.В. Турбо Паскаль 7.0. Учебное пособие. В 2-х книгах -М.: «Нолидж», 1997, т.1. стр. 278-286.

5. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7/0. К.: Юниор, 1997. Стр.216-220.

Теоретичні положення

Процес розгалуження

Алгоритми розв’язання більшості задач не є послідовними. Дії (обчислення), які необхідно виконати, можуть залежати від визначеної умови, наприклад, від вихідних даних, або результатів, отриманих під час виконання програми. Таким чином розгалужений алгоритм передбачає вибір однієї з декількох послідовностей дій у залежності від вихідних даних чи проміжних результатів.

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

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

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

Логічний вираз

Логічний вираз - це засіб запису умов для пошуку потрібних даних. Логічний вираз може приймати значення true (істинність), або false (хибність). Логічні вирази бувають прості та складені. Простий - це два арифметичні вирази, з’єднані символом відношення, а складений - це прості логічні вирази, з’єднані назвами логічних операцій: and (і), not (ні) і or (або).

And (і) -якщо кожна умова, що входить до складної, істинна, тоді вся складна умова типу «і» теж істинна. Якщо хоча б одна умова, що входить до складної, хибна, тоді вся складна умова типу «і» теж хибна.

O r (або) -якщо хоча б одна умова, що входить до складної, істинна, тоді вся складна умова типу «або» істинна. Якщо жодна умова, що входить до складної, хибна, тоді вся складна умова типу «або» теж хибна.

Not ( ні ) -якщо кожна умова, що входить до складної, істинна, тоді складна умова типу «ні» хибна. Якщо кожна умова, що входить до складної, хибна, тоді вся складна умова типу «ні» істинна.

Розглянемо означення логічних операцій.

Вираз Значення Вираз Значення
nottrue false notfalse true
true andtrue true true ortrue true
true andfalse false true orfalse true
false andtrue false false ortrue true
false andfalse false false orfalse false

Приклад. Нехай = 3, у = - 9. Розглянемо деякі логічні вирази та їхні значення.

Прості вирази Значення Складені вирази Значення
= 3 true not(y <= -50) true
> y true (1 < x) and(x < 5) true
7 mod3 = 1 true (x > 4) or(y < -15) false
y div2 = 4 false (x > 4) or(y > -15) true

Подвійну нерівність 1< <5 як складений логічний вираз записують так: (1<х) and (х<5). Сукупність нерівностей вигляду х<1; х>5 - так: (х<1) or (х>5). Прості логічні вирази, які входять у складені, завжди беруть у дужки.

1.3 Оператор розгалуження if (умовний оператор) - повна форма

Оператор розгалуження в мові програмування Pascal може записуватися в повній або скороченій формах.

Поєна форма оператора розгалуження має вигляд:

If <логічний вираз> then <оператор 1> else <оператор 2>; Службові слова, які використовуються в умовному операторі, мають зміст i f -якщо, then -то, else -інакше.

Дія команди. Якщо логічний вираз істинний, то виконується оператор 1, а потім оператор, який знаходиться в програмі після всього оператору розгалуження; якщо логічний вираз хибний, то виконується оператор 2, а потім оператор, який знаходиться після оператору розгалуження. Оператори 1 та 2 можуть бути простими або складеними.

Блок-схема умовного оператору (повна форма) має вигляд:

Приклад. Нехай х= 9. У результаті виконання команд

if х> 7 then у: = х*х else у: = sin (х);

if х < 5 then z: = exp(x) else z: =sqrt (х);

отримаємо у = 81, z = 3.

Приклад програми порівняння двох чисел.

program Umova;

uses Crt;

var a,b: integer;

begin

clrscr;

write (‘a=’);

readln (a);

write (‘b=’);

readln (b);

if a > b then writeln (‘ a більше b ’) else writeln(‘b більше a’);

readln;

end.

В даному випадку, якщо а = 2, b = 5, то значення логічного виразу a>b хибне, отже на екрані з’явиться повідомлення - b більше a.

Задача 1. Обчислити і надрукувати значення складеної функції у у деякій заданій користувачем точці х, якщо

Блок-схема алгоритму задачі 1:

program Myfunction; uses Crt; var,y: real; begin

clrscr;

writeln (‘Введіть ’);

readln (x);

if x < - 1 then y:=ln(abs(x)) else

if (x >= -1) and (x < 1) then y:=sin(x) else y:=cos(x);

writeln(‘x=’, x:5:2,’ y=’, y:5:2);

readln

End.

Щоб перевірити роботу програми потрібно задати X не менш три рази.

Результати роботи програми для кожного діапазону значень X:

Введіть x Введіть x Введіть x

3 -2 0,5

x= 3.00 y=-0.99 х=-2.00 у=-0.69 х= 0.50 у= 0.48

 

Зауваження. У команді розгалуження перед службовим словом else символ «;» не ставиться.

1.4 Оператор розгалуження (if) - скорочена форма

Коротка форма оператора розгалуження має вигляд:

If <логічний вираз> then <оператор 1>;

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

Блок-схема умовного оператору (коротка форма) має вигляд:

Приклад. Нехай х = 25. Тоді у результаті виконання команд

if x > 12 then y:=2*x; z:=10;

if x < 5 then z:=exp(x);

 

отримаємо у = 50, z = 10.

Оператор goto

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

Оператор безумовного переходу записується у вигляді:

goto <позначка>;

Приклад. Goto M1; Goto Мітка 1.

Позначка може стояти перед довільним оператором в програмі. Вона відокремлюється від оператора двокрапкою (:)

<позначка>: <оператор>;

Позначку треба заздалегідь оголосити на початку програми у розділі опису міток. Цей розділ відкривається службовим словом label і записується у вигляді:

label <список позначок>;

Приклад. Label M1, Мітка1, 7, а2;

Позначка може починатися з букви або бути числом від 0 до 9999. Однією позначкою може бути помічений тільки один оператор. Ідентифікатор позначки не повинен співпадати з ідентифікатором змінної або константи.

Задача 2. Ввести декілька наборів коефіцієнтів квадратного рівняння ax2+bx+c=0 і вивести повідомлення чи матиме рівняння дійсні корені, чи ні.

program Rivnyannya;

uses Crt;

label 99, finish;

var a,b,c,d,x,y:real;

Begin

clrscr;

99: writeln (‘Введіть коефіцієнти квадратного рівняння’);

readln (a,b,c);

if a = 0 then goto finish;

d:= sqr(b) - 4*a*c*;

if d >= 0 then writeln (‘Дане рівняння має дійсні розв’язки’)

Else

Begin

writeln(‘Дані введені некоректно’); writeln(‘Рівняння дійсних розв’язків не має);

goto 99;

end;

finish: readln;

End.

Зауваження. Не можна передавати керування команді, яка є в середині підпрограми чи в середині складеної команди. Оператор безумовного переходу порушує принцип структурованого підходу до написання програм мовою Pascal, тому використовувати його необхідно у випадку крайньої необхідності.

Оператор вибору (case)

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

Оператор вибору (case) має вигляд: case <селектор> of

<список значень 1>: <оператор 1>;

<список значень n>: <оператор n>;

else <оператор n+1> end;

Вираз, який записується між службовим словом case і of, називається селектором. Селектор - це проста змінна цілого, символьного, перерахованого або логічного типу; списки значень - сталі або діапазони, тип яких зберігається з типом виразу. Якщо список значень складається з декількох елементів, то вони перераховуються через кому. Дійсні і рядкові типи в селекторах використовувати не можна. Складова частина else <команда n + 1> може бути відсутня - тоді матимемо коротку форму команди case.

Дія команди. Якщо значення виразу селектора збігається зі значенням із списку і, то виконується оператор з номером і, а інші оператори цієї конструкції не виконуються. Якщо значення виразу не збігається з жодним значенням з жодного списку, то виконується оператор n + 1 або у випадку короткої форми, наступний оператор після команди case, тобто після службового слова end

Задача 3. Нехай населені пункти позначені номерами від 1 до 8. Вартість одного квитка до конкретного пункту k визначається так:

Скільки коштуватимуть т квитків до населеного пункту номер якого вводять з клавіатури?

program Kvytky;

uses Crt;

var k,m,cina: integer;

Begin

clrscr;

writeln (‘Введіть номер пункту та кількість квітків:’);

readln (k, m);

case k of

1: cina:=22;

2..4: cina:=25;

5,6: cina:=30

else cina:=35

end;

write (m, ‘ квитків до пункту’, k,’ коштують ‘);

writeln (m*cina);

readln;

End.

 

Якщо під час виконання програми ввести дані так: 3 5, то на екрані отримаємо: 5 квитків до пункту 3 коштують 125.

 

Хід роботи:

1. Вивчити теоретичний матеріал.

2. Виконати індивідуальне завдання.

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

Контрольні запитання:

1. Який обчислювальний процес називають процесом з розгалуженням?

2. Який оператор умови використовується у мові Pascal?

3. Який оператор безумовного переходу використовується у мові Pascal?

4. Що таке оператор вибору і коли його використовують?

5. Як працює умовний оператор?

6. Які значення приймають логічні величини?

7. Які з наведених нижче операторів розгалуження є:

 

1) правильними________________

2) неправильними_______________

а) if a<b then a:=a+1 else b:=b-1;

б) if (x<5) and (y>3) then s:=s+1 else s:=s–1;

в) if a<>b then b:=a;
r) if 9 then k:=k+1.

8. Які значення будуть мати змінні a і b в результаті виконання оператору
розгалуження:

if a<b then a:=b else b:=a,

якщо перед виконанням а=0.5, b=-1.7

Відповідь а=_________ b=___________________

 



Поделиться:


Последнее изменение этой страницы: 2016-04-18; просмотров: 755; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.210.126.232 (0.048 с.)