Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
іНФОРМАТИКА 1.doc
Скачиваний:
15
Добавлен:
15.08.2019
Размер:
13.85 Mб
Скачать

Додаток 1

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

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

Варіант

Умова завдання

Додаток 2

  1. Дано дійсні числа . Обчислити значення виразу .

  2. Обчислити значення виразу .

  3. Обчислити значення сум:

  4. Обчислити значення сум:

  5. Обчислити значення сум:

  6. Обчислити значення сум:

  7. Дано натуральне число n. Обчислити значення сум:

  8. Дано натуральне число n. Обчислити значення сум:

  9. Дано натуральне число n. Обчислити значення сум:

  10. Дано натуральне число n. Обчислити значення сум:

  11. Дано натуральне число n та дійсне число х. Обчислити:

  12. Дано натуральне число n та дійсне число х. Обчислити

  13. Дано натуральне число n та дійсне число х. Обчислити

  14. Дано натуральне число n та дійсне число х. Обчислити

  15. Дано натуральне число n та дійсне число х. Обчислити)

  16. Дано дійсні числа . Обчислити значення виразу .

  17. Обчислити значення виразу .

  18. Обчислити значення сум:

  19. Обчислити значення сум:

  20. Обчислити значення сум:

  21. Обчислити значення сум:

  22. Дано натуральне число n. Обчислити значення сум:

  23. Дано натуральне число n. Обчислити значення сум:

  24. Дано натуральне число n. Обчислити значення сум:

  25. Дано натуральне число n. Обчислити значення сум:

  26. Дано натуральне число n та дійсне число х. Обчислити:

  27. Дано натуральне число n та дійсне число х. Обчислити

  28. Дано натуральне число n та дійсне число х. Обчислити

  29. Дано натуральне число n та дійсне число х. Обчислити

  30. Дано натуральне число n та дійсне число х. Обчислити)

7.2. Основи структурного програмування Визначення функцій, процедур. Параметри процедури. Процедури без параметрів. Виклик процедур. Глобальні і локальні параметри.

П л а н

  1. Підпрограми - процедури.

1.1.Формальні параметри. Локальні і глобальні об’єкти.

  1. Підпрограми – функції.

  1. ПРОЦЕДУРИ КОРИСТУВАЧА.

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

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

Є такі види підпрограм:

  • підпрограми-процедури

  • підпрограми-функції.

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

Стандартні підпрограми містяться у стандартних модулях, їх створювати не потрібно.

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

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

Описання процедури таке ж, як і описання програми, але замість заголовка програми фігурує заголовок процедури. Заголовок має вид:

Загальний опис процедури:

Procedure <назва> (<список формальних параметрів>);

<розділ описів і оголошень процедури>;

Begin

<розділ команд процедури>

End;

В даному випадку procedure, begin, end – зарезервовані слова,

<назва> - унікальна в межах програми ідентифікатор процедури, за яким вона викликається;

<список формальних параметрів> - у списку формальних параметрів перераховують змінні разом із зазначенням їхніх типів.

<розділ описів і оголошень процедур > - розділ оголошення ідентифікаторів, що будуть використовуватись лише в межах процедури;

<операторна частина процедури> - оператори, які використовуються під час виклику процедури.

Масиви фіксованих розмірів у списках формальних параметрів не можна описувати за допомогою слова array (див. зразки програм).

Виклик процедури здійснюється за її іменем, яке використовується в основній або в інших процедурах як окремий оператор. Формат оператора виклику процедури:

Звернення до процедури:

<назва процедури> (<список фактичних параметрів>);

1.1. ФОРМАЛЬНІ ПАРАМЕТРИ. ЛОКАЛЬНІ І ГЛОБАЛЬНІ ОБ’ЄКТИ

Параметри бувають 2-х видів: параметри-значення і параметри-змінні.

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

Параметри-значення використовуються для передачі даних в процедуру. Це значить, що для параметра-значення на час виконання процедури резервується пам’ять, розмір який визначений типом параметра і яка заповнюється при виклику процедури. Таким чином, використання параметрів-значень при передачі даних великого об’єму може привести до невиправданих витрат часу процесора і пам’яті, що адресується.

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

Фактичними параметрами-значеннями можуть бути вирази або дані відповідних типів.

Нехай, н а п р и к л а д, змінна A типу Sequence - масив з 1000 дійсних чисел і

Procedure MaxMin(X : Sequence; var Max, Min : Real)

- пошук максимального і мінімального елементів масиву X.

Тоді при зверненні до процедури MaxMin за допомогою оператора MaxMin(A, Sup, Inf) компілятор виділить пам’ять (6 - 10 байт на кожний елемент масиву - всього 6000 - 10000 байт ) і здійснить 1000 пересилань чисел з A в X. Якщо ж параметр X визначити як параметр-змінну:

Procedure MaxMin(var X : Sequence; var Max, Min : Real)

ні пам’яті, ні пересилань не знадобиться.

П р и к л а д:

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

Перш за все потрібно виділити які основні дії буде виконувати програма, і які дії можна покласти на процедури. Такими діями є: введення вхідних даних (процедура Init), обчислення щорічних нарахувань (процедура Solution), обчислення кінцевої суми на рахунку (процедура Final) і виведення даних на екран (процедура Browse). Тепер можна розробляти основну програму.

На різних етапах циклічного процесу користувач може виконувати різні дії: введення даних, обчислення щорічних на­рахувань або обчислення кінцевої суми. Вибір бажаної дії було б зручно здій­снювати натисненням клавіші на клавіатурі. Для збереження значення вибраного пункту меню використаємо змінну key символьного типу, а вибір відповідної про­цедури здійснимо оператором вибору case із селектором key. Значення до змінної key вводитимемо за допомогою функції readkey, (а не за допомогою оператора read, оскільки функція readkey не потребує натискання клавіші Enter після введення cимволу). Умовою завершення програми може стати натискання користувачем клавіші Esc.

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

Procedure Init;

Begin

End;

{=================================}

Procedure Browse;

Begin

End;

{=================================}

Procedure Solution;

Begin

End;

{=================================}

Procedure Final;

Begin

End;

program ex4_l; {калькулятор нарахувань за депозитними внесками}

uses crt;

var key:char;

deposit:real; {початковий внесок}

period:integer; {термін дії рахунку}

rate:real; {відсоткова ставка річного прибутку}

sum:real; {сума на депозиті}

year:integer; {поточний рік}

{================ введення даних ==================}

procedure Init;

begin

writeln('enter deposit '); readln(deposit);

writeln('enter period '); readln(period);

writeln('enter rate :5..20 '); readln(rate);

rate:=rate/100; {перетворення цілочислового відсотка на коефіцієнт rate}

end;

{======= виведення результатів розрахунків ========}

procedure Browse;

begin

writeln ('sum at the end of ', year, ' year is ', sum:6:2);

writeln('press enter to continue');

readln;

end;

{======= обчислення щорічних сум на рахунку =======}

procedure Solution;

begin

sum:=deposit; {початкове значення sum}

for year:=1 to period do

begin

sum:=sum*(1+rate); {рекурентна формула}

browse;

end;

end;

procedure Final;

begin

year:=period;

{розрахунок sum за формулою складних відсотків}

sum:=deposit*exp(Ln(1+rate)*period);

Browse;

End;

{============== основна програма =========}

Begin

clrscr;

write ('1. Введіть дані ');

write ('2. Обчислення щорічних сум ');

writeln('3. Розрахунок суми ');

write('4. Очищення калькулятора ');

writeln('ESC – вихід ');

writeln ( ' =================================');

window(1,4,80,25);

repeat

writeln( ' Виберіть команду (1-4 or ESC):');

key:=readkey;

case key of

'1': Init;

'2': Solution;

'3': Final ;

'4': clrscr;

end;

until key=#27;

end.

Приклад: "Розташувати в порядку зменшення три цілі числа".

Program Pr; Var S1,S2,S3 :Integer; Procedure Swap(Var A,B: Integer); {Процедура Swap с параметрами-змінних} Var C : Integer; {C - незалежна локальна змінна} Begin

C:=A; A:=B; B:=C {Міняємо місцями вміст A і B} End; Begin

Writeln('Введітье три числа'); Readln(S1,S2,S3); If S1>S2 Then Swap(S1,S2); If S2>S3 Then Swap(S2,S3); If S1>S2 Then Swap(S1,S2); Writeln('Числа в порядку зменшення:V',S1,S2,S3)

End.

Процедура з параметрами:

Необхідно знайти просте число за його номером у послідовності всіх простих чисел. Першими членами цієї послідовності є числа 1, 2, 3, 5, 7, 11,… . Тому третім за номером простим числом є 3, а п’ятим – 7 тощо.

Алгоритм пошуку простого числа за його номером:

  1. Увести номер простого числа.

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

  3. Перше число, що перевіряється, прирівняти одиниці.

  4. Поки лічильник простих чисел не досягне введеного номера, повторювати дії:

  • Перейти до перевірки наступного числа.

  • Якщо число просте, збільшити лічильник простих чисел.

  1. Останнє просте число з тих, що переглядалися на кроці 4, і є шуканим.

Program parametr; {пошук простого числа за його номером} var number, {номер шуканого простого елемента} j, {лічильник простих чисел} n : integer; {число, що перевіряється на простоту} flag : boolean; {ознака того, що число є простим}

procedure Simple(a : integer; var b : boolean); {a – число, що перевіряється на простоту b – ознака того, що число просте } var k : integer; {потенційний дільник} begin k:= 2 {вибрати перший дільник} b:= true; {немає підстав вважати а складеним} {перебирати потенційні дільники} while (k<= trunc(sqrt(a))) and b do begin if n mod k=0 then {якщо k ділить n} b:= false; {вказуємо про це} k:=K+1 {наступний потенційний дільник} end; end;

{===== основна програма =======}

Begin

Writeln (‘Введіть номер ’);

Readln (number);

J : = 1;

N : =1;

While j < number do

Begin

N : = n + 1;

Simple (n , flag);

If flag then

J : = j + 1;

End;

Writeln (‘j = ’, j , ‘ prime = ’ , n );

End.