Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_lektsy_Pascal_C.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.85 Mб
Скачать

Оператори реалізації розгалужених алгоритмів

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

Використовується для вибору дій в залежності від якоїсь умови.

Формат:

If <умова> then <оператор 1> [ else <оператор 2> ];

<умова> - логічний вираз

<оператор 1, 2> - може бути простим і складним

Якщо результат умови є істина, то виконується <оператор 1> , а потім управління передається оператору, що стоїть за умовним, інакше управління передається оператору, що стоїть за словом Else, якщо воно є, а потім оператору, що стоїть за умовним; якщо його нема, то зразу ж оператору, що стоїть за умовним.

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

Оператор вибору.

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

Формат:

Case <перемикач> of

<набір значень 1>: <оператор 1>;

<набір значень 2>: <оператор 2>;

.

.

<набір значень n>: <оператор n>

[ else <альтернативний оператор>];

end;

<перемикач> - вираз переліченого типу

<набір значень n> - допустимі значення, які може приймати перемикач. Елементи набору відділяються комами. Значення повинні бути того ж типу, що і перемикач. Можна використовувати діапазони, наприклад ‘a’ .. ‘m’.

<набір значень n> - оператор, що виконується для даного набору значень. Може бути простим і складним.

Алгоритм виконання: обчислюється значення перемикача, серед наборів значень розшукується обчислене значення. Якщо воно знайдене – виконується оператор, що відповідає цьому набору і управління передається оператору, що слідує за оператором вибору. Якщо значення перемикача не знайдено ні в одному з наборів даних, то виконується <альтернативний оператор>, якщо він заданий, а потім управління передається оператору, що слідує за оператором вибору. Якщо такий оператор не задано - управління передається оператору, що слідує за оператором вибору.

Розробка програм реалізації розгалужених алгоритмів

Приклад 1. Розробити програму визначення, чи належить задане число проміжку [2,10].

program Diapazon;

{Визначення належності Х[2,10]}

var

X:real;

begin

write ('Введіть значення числа ');

readln(X);

if (X>=2) and (X<=10) then

writeln (‘Число ‘,X,’ належить проміжку [2,10]‘)

else

writeln (‘Число ‘,X,’ не належить проміжку [2,10]‘);

readln;

end.

Приклад 2. Розробити програму, яка виконує наступні дії: Задані два числа a,b. Якщо a не менше b (тобто a>=b), то, якщо b негативне необхідно b збільшити в 10 раз. Якщо a менше b (тобто a<b), то знайти модуль а. В інших випадках значення a,b не змінювати.

program Rachet;

{Визначення значень a, b}

var

a,b:real;

begin

write ('Введіть два числа ');

readln(a,b);

if a<=b then

begin

if b<0 then b:=10*b;

end

else a:=abs(a);

writeln (‘a=‘,a:8:2,’ b=‘,b:8:2);

readln;

end.

Приклад 3. Розробити програму, яка виконує наступні дії: для введеного символу видати відповідне сповіщення: при введенні „П” вивести своє прізвище, при введенні „І” – ім’я, при введенні іншого символу видати сповіщення „Символ не оброблюється”.

program Simbol;

{Визначеннясимволів}

var

С:char;

begin

write ('Введіть cимвол ');

readln(С);

case C of

‘П’,’п’; writeln (‘Іванов‘);

‘І’,’і’; writeln (‘Сергій‘)

else

writeln (‘Символ не обробляється’);

end;

readln;

end.

Завдання для самоперевірки.

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

    2. Чи необхідно ставити символ пунктуації пере фразою else в умовному операторі .

    3. Чому оператор case називається оператором вибору.

    4. В операторі case перемикач повинен бути якого типу?

    5. В операторі case яким символом відділяються набір значень перемикача від оператора?

    6. Розробити програму, яка визначає, чи задане число кратне числам 7,6.

    7. Розробити програму, яка вводить два числа і символ дії (+,- , *, /). Для введеного символу дії необхідно виконати саму дію над числами.

    8. Розробити програму: Для двох заданих чисел x,y зробити так, щоб в х було завжди більше число.

    9. Розробити програму, яка визначає чи є два заданих числа однієї парності.

    10. Розробити програму, яка визначає чи є два заданих числа взаємно протилежні, тобто є однаковими по значенню і різними за знаками..

    11. Розробити програму, яка в залежності від введеного часу (від 8 до 17 годин) сповіщає яка зараз пара, перерва або нема занять.

Оператори повторів

Бувають трьох типів:

  • Оператор циклу з параметром

  • Оператор циклу з передумовою

  • Оператор циклу з післямовою

Оператор циклу з параметром.

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

Формат:

For <параметр циклу>:= <початкове значення> to | downto <кінцеве значення> do <оператор>;

<параметр циклу> - змінна переліченого типу, може змінюватись на крок, що дорівнює 1 або –1. В першому випадку використовується ключове слово to, в іншому – downto.

<початкове значення> , <кінцеве значення> - вирази того ж типу, що і параметр циклу. Визначають граничні значення параметру циклу. Тип повинен співпадати з типом параметру циклу.. <оператор> - тіло циклу. Може бути простим або складним оператором.

Алгоритм виконання:

  1. Визначається значення <початкове значення> , <кінцеве значення>.

  2. Значення <параметр циклу> зрівнюється з значенням <початкове значення>. Якщо значення <параметр циклу> не більше <початкове значення> (в разі використання фрази to) , або не більше > (в разі використання фрази downto) <кінцеве значення>, то виконується <оператор>. В протилежному випадку цикл завершується.

  3. Після виконання <оператор> до <параметр циклу> додається 1 або -1, в залежності від фрази > to | downto.

  4. Дії повторюються з кроку 2).

Оператор циклу з передумовою

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

Формат:

While <умова> do <оператор>;

<умова> - логічний вираз

<оператор> - тіло циклу. Може бути простим або складним оператором.

Алгоритм виконання:

  1. Визначається значення <умова>.

  2. Якщо результат істина, то виконується <оператор>. В протилежному випадку цикл завершується.

  3. Після виконання <оператор> дії повторюються з кроку 1).

Таким чином, цикл повторюється до тих пір, поки значення <умова> буде істина.

Щоб оператор працював вірно, необхідно щоб в тілі циклу змінювались елементи, що входять до виразу <умова>.

Оператор циклу з післямовою

Використовується в випадку неозначеності кількості повторів. Умова закінчення циклу перевіряється після виконання циклу. Тому тіло циклу виконується хоча б один раз.

Формат:

Repeat

<оператор 1>;

.

.

<оператор n>

until <умова>;

<умова> -логічний вираз

<оператор1> . . <оператор n> - тіло циклу.

Алгоритм виконання:

    1. Виконуються оператори тіла циклу.

    2. Визначається значення <умова>.

    3. Якщо результат не істина, то перехід до дії 1). В протилежному випадку цикл завершується.

Таким чином, цикл повторюється до тих пір, поки значення <умова> буде не істина.

Розробка програм реалізації циклічних алгоритмів.

Приклад 1. Вивести послідовно числа від 150 до вказаного меншого числа в зворотному порядку.

PROGRAM chisla;

var

x,i:byte;

{x - значення, що вводиться

i - змінна циклу}

begin

write ('введи ціле число, менше 150');

readln(x);

for i:=150 downto x do

write (i:5);

end.

Приклад 2. Знайти суму десяти введених значень.

PROGRAM suma;

var

x,s:real;

i:byte;

{x - значення, що вводиться

s - сума введених значень

i - змінна циклу}

begin

s:=0;

for i:=1 to 10 do

begin

write ('введи наступне значення');

readln(x);

s:=s+x;

end;

writeln ('Сума введених значень = ',s:10:2);

end.

Приклад 3. Вводиться послідовність символів. При введенні символу ´П´ - вивести своє прізвище, при введенні символу ´І´ - ім´я, при введенні символу ´к´ - завершити роботу.

PROGRAM Dann;

var

c:char;

{c - символ, що вводиться}

begin

repeat

write (‘Введи символ (для заверш.роботи символ к)’);

readln c;

case c of

’П’,’п’: writeln (’Iванов’);

’I’,’i’: writeln (’Іван ’);

end;

until c=’к’;

end.

Приклад 4. Знайти найбільше значення функції Y=2sin(X+3)+2X на проміжку [10,100] в точках з кроком 10.

PROGRAM Funk;

var

X,Y: max:real;

begin

X:=10;

Max:=2*sin(X+3)+2*X;

While X<= 100 do

Begin

Y:= 2*sin(X+3)+2*X;

If Y>max then

Max:=Y;

X:=X+10;

End;

Writeln (‘Максимальне значення функції ‘,max:7:2);

end.

Приклад 5. Знайти кількість цифр в заданому числі.

Program chislo;

{Сума цифр заданого числа}

var

x,S:integer;

begin

write ('Введи чисдо');

readln (x);

S:=0;

while x<>0 do

begin

S:=S+x mod 10;

x:=x div 10;

end;

writeln ('Сума цифр заданого числа = ',S:5);

readln;

end.

Приклад 6. Вивести всі трьохзначні числа у яких крайні цифри однакові.

Program chislo;

var

k,m,n:integer;

begin

for k:=1 to 9 do

for m:=0 to 9 do

for n:=0 to 9 do

if k=n then

writeln (k*100+m*10+n:5);

readln;

end.

Завдання для самоперевірки.

  1. Який з операторів реалізації циклічних процесів краще використати, якщо відома кількість повторів.

  2. Який з операторів реалізації циклічних процесів краще використати, якщо відомо, що повтори потрібно завершити при натисканні деякої клавіші.

  3. Який з операторів реалізації циклічних процесів краще використати, якщо відома, що повтори потрібно завершити коли змінна набуде деякого значення.

  4. В операторі for параметр циклу повинен бути якого типу?

  5. Що являється умовою завершення циклу в операторі repeat ?

  6. Скільки разів буде виконано цикл For i:=1 to 1 do writeln (‘День добрий!’);

  7. Визначити Y. Y:=1; For i:=1 to 5 do if i<4 then inc(y);

  8. Що являється умовою завершення циклу в операторі while ?

  9. Скільки разів буде виконано цикл While true do writeln (‘День добрий!’);

  10. Що являється умовою завершення циклу в операторі for ?

  11. Розробити програму, яка визначає кількість позитивних, негативних і нульових значень в послідовності 15 заданих чисел.

  12. Розробити програму, яка визначає факторіал заданого числа.

  13. Розробити програму, яка визначає мінімальне введене значенні при вводі послідовності цілих чисел. Введення завершується при вводі числа -77.

  14. Розробити програму, яка визначає всі натуральні дільники заданого числа.

  15. Розробити програму, яка визначає чи є задане ціле число простим.

  16. Розробити програму, яка знаходить кількість цифр заданого натурального числа.

  17. Розробити програму, яка виводить всі трьохзначні натуральні числа у яких середня цифра є нуль.

  18. Розробити програму, яка знаходить суму членів ряду . N = 20.

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

  20. Розробити програму, яка знаходить суму для заданого n.

Процедурно-орієнтоване програмування .Допоміжні алгоритми

    1. Загальна характеристика допоміжних алгоритмів.

    2. Глобальні та локальні описи.

    3. Упереджуючий опис підпрограм.

    4. Функції.

    5. Процедури.

    6. Передача в підпрограму структурованих типів даних.

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

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

Структура підпрограми така ж як і програми: вони складаються з заголовку і блоку.

Підпрограма повинна мати засіб для обміну даними між нею і програмою, що її викликає. Таким засобом є формальні параметри, які описуються в заголовку. За допомогою формальних параметрів можна передавати в підпрограму дані і отримувати їх нові значення. Параметрами можуть бути параметри-значення, параметри-змінні (перед ними повинно стояти слово VAR), параметри-процедури (перед ними ставиться слово PRОCEDURE), параметри-функції ( перед ними ставиться слово FUNCTIЇN).

Для кожного формального параметра вказується:

  • ключове слово (VAR, PRОCEDURE, FUNCTIОN), якщо воно потрібно,

  • ім´я параметра,

  • символ ":" та його тип.

Описи параметрів відділяються між собою символом ";".

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

Виклик підпрограми має формат:

< ім’я підпрограми > [ (< список фактичних параметрів >) ];

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

Глобальні та локальні описи

Глобальні константи, типи, змінні - це ті, що оголошені в програмі зовні процедур та функцій до їх означення. Глобальні елементи доступні всім процедурам і функціям.

Локальні - існують тільки в тілі процедури або функції, де вони визначені. Формальні параметри також є локальними.

Якщо ім´я локального опису співпадає з ім´ям глобального опису, то така змінна розглядається як локальна.

Упереджуючий опис підпрограм

При описі процедур і функцій необхідно слідкувати, щоб опис підпрограми, що викликається, був раніше виклику. Щоб не слідкувати за послідовністю записів підпрограм можна попередньо описати заголовки всіх підпрограм з словом FОRWARD, а потім в довільному порядку записати опис всіх підпрограм.

Формат попереднього опису заголовку:

<заголовок підпрограми >; FОRWARD;

Функції

Функції використовуються в тому разі, коли підпрограма повертає в якості результату одне значення простого типу.

Формат заголовку функції:

FUNCTIОN <ім´я функції> [(<список формальних параметрів>)]:

<тип результату>;

Результат функції повертається в програму, що її викликає, тільки через ім´я функції. Тому в розділі операторів функції обов´язково повинен бути оператор присвоєння імені функції значення результату або оператор присвоєння системній змінній RESULT значення результату.

Звертання до функції використовується в виразах.

Процедури

Процедури використовуються в тому разі, коли підпрограма повертає в якості результату значення структурованого типу або кілька значень, або значень не повертає..

Формат заголовку процедури:

PRОCEDURE <ім´я процедури> [(<список формальних параметрів>)];

Результат функції повертається в програму, що викликала дану, за допомогою параметрів, які обов´язково повинні бути описані як параметри-змінні.

Передача в підпрограму структурованих типів даних

Всі формальні структуровані параметри повинні бути описані як параметри-змінні.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]