Розв’язок задач на мові програмування Pascal

Розробка програмних засобів в професійному програмуванні. Використання простих і гнучких структур розгалужень, циклів. Фундаментальні ідеї алгоритмів. Стандартні функції і процедури. Алгоритми з розгалуженням. Загальна форма запису циклу з лічильником.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык украинский
Дата добавления 15.12.2012
Размер файла 227,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Управління освіти Святошинської районної в м. Києві

Державної адміністрації

Спеціалізована школа №304

Розв'язок задач на мові програмування Pascal

Седлецька Галина Григорівна

Вчитель інформатики

Спеціаліст Вищої категорії

2012

1. Лінійні алгоритми

Паскаль - мова професійного програмування, яка названа на честь французького математика і філософа Блеза Паскаля (1623-1662) та розроблено в 1968-1971 рр.. Никлаусом Віртом. Спочатку була розроблена для навчання, але незабаром стала використовуватися для розробки програмних засобів в професійному програмуванні.

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

1. Простий для вивчення.

2. Відображає фундаментальні ідеї алгоритмів.

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

4. Використання простих і гнучких структур розгалужень, циклів.

5. Надійність розроблених програм.

Загальна структура програми на мові Паскаль наступна:

Рrogram ИМЯ..; {заголовок програми}

Uses ...; {раздвл опису модулів}

Var ..; {розділ оголошення змінних}

...

Begin {початок виконавчої частини програми}

... {послідовність

... операторів}

End. {кінець програми}

Оператор присвоювання - основний оператор будь-якої мови програмування. Загальна форма запису оператора:

Ім'я величини : = вираз

Наприклад, В : = ; або V : = +1;

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

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

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

Програма - алгоритм, записаний на мові програмування.

Алфавіт мови - набір елементарних символів, які використовуються для складання програм.

Алфавіт містить:

* 52 букви латинського алфавіту (малі і великі);

* арабські цифри (0-9);

* спеціальні символи;

* знаки математичних дій (+ - * /);

* знаки пунктуації (:.,; "`);

* дужки ([] () {});

* знак пробілу;

* знаки відношення (< > <> =).

Ідентифікатор (ім'я) - ім'я якого-небудь елементу програми, яке повинно задовольняти таким вимогам:

* довжина імені не повинна перевищувати 63 символи,

* першим символом не може бути цифра,

* змінна не може містити пробіл;

* ім'я не повинно збігатися з зарезервованим (службовим) словом,

* великі та малі літери сприймаються однаково.

Зарезервовані (службові) слова - це слова, що використовуються тільки за своїм прямим призначенням. Їх не можна використовувати в якості змінних, так як вони виконують певне смислове навантаження.

Приклади зарезервованих слів: AND, GOTO, PROGRAM, ELSE, IF, RECORD, NOT, ARRAY, REPEAT, UNTIL, BEGIN, IN, SET, END, CASE, CONST, USES, INTERFACE, STRING, LABEL, THEN, OF, DIV, TO, VAR, DO, TYPE, WHILE, DOWNTO, FILE, FUNCTION, PROCEDURE та інші.

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

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

Коментарі - деяка запис, що служить для пояснення програми, який записується у фігурних дужках.

Для тимчасового зберігання інформації в оперативній пам'яті ЕВМ в мові Паскаль використовуються константи і змінні.

Вони можуть бути різних типів:

* цілі числа (integer);

* дійсні числа (real);

* символьний тип (Char);

* строковий тип (string);

* логічний тип (boolean);

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

Процедури Read и ReadLn використовуються для введення інформації з клавіатури. Часто процедуру ReadLn без параметрів застосовують в кінці програми для затримки: до натискання на клавішу <Enter> результат виконання програми залишається на екрані. Це дуже корисно робити для аналізу результатів.

Для розв'язування задач необхідні стандартні функції і процедури.

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

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

Арифметичні функції:

1. Abs (x), де аргумент і результат є змінними цілого або дійсного типу - обчислює модуль (абсолютну величину) числа х;

2. Cos (х), де аргумент і результат є змінними дійсного типу - обчислює косинус х;

3. Sin (х), де аргумент і результат є змінними дійсного типу - обчислює синус х;

4. Frac (х), де аргумент і результат є змінними дійсного типу - виділяє дробову частину числа х;

5. Int (х), де аргумент і результат є змінними дійсного типу - виділяє цілу частину числа х;

6. Pi, де результат є змінною дійсного типу - обчислює значення р;

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

8. Sqr (х), де аргумент і результат є змінними цілого або дійсного типу - обчислює x2;

9. Sqrt (х), де аргумент і результат є змінними цілого або дійсного типу - обчислює v х

Задача 1. Знайти середнє значение трьох чисел

Program Srednee;

Uses Crt;

Var

First, Second, Third ,Sum: integer;

Ser_ar : real;

Begin

ClrScr;

Write (`Введіть перше число=> `);

ReadLn(First);

Write (`Введіть друге і третє числа через пробіл =>`);

ReadLn(Second, Third);

Sum := First + Second + Third;

Ser_ar:= Sum/3;

Write (`Среднєє значення `, First, `, `,Second, ` и `, Third, ` дорівнює `,

Ser_ar:5:2);

ReadLn;

End.

Задача 2. Створити за допомогою програми свою візитну картку.

********************************

* Іванов Сергій *

* Пролетарска 74 кв. 55 *

* Телефон 445-72-88 *

********************************

Program Vizutka;

Uses Crt;

Begin

ClrScr;

Writeln (`******************************`);

Writeln (`* Іванов Сергій *`);

Writeln (`* Пролетарська 74 кв. 55 *`);

Writeln (`* Телефон 445-72-88 *`);

Writeln (`******************************`);

ReadLn;

End.

Задача 3

Запросити у користувача два числа і вивести на екран результат суми, різниці, добутку, частки та цілочисельного ділення і залишок від цілочисельного ділення у вигляді таблиці. Наприклад, при введенні чисел 5 і 3 на екрані повинна бути така таблиця:

*************************************************************

* X * Y * syma * riznuzya * dobytok * chastka * div * mod *

*************************************************************

* 5 * 3 * 8 * 2 * 15 * 1.67 * 1 * 2 *

*************************************************************

Program Arufmet_dii;

Uses Crt;

Var

x, y, syma, riznuzya dobytok, z_div, z_mod : integer;

chastka : real;

Begin

ClrScr;

Write (`Введіть перше число=>`);

ReadLn(x);

Write (`Введіть друге числo=>`);

ReadLn(y);

syma := x + y;

riznuzya := x - y;

dobytok := x * y;

chastka := x / y;

z_div := x div y;

z_mod := x mod y;

Writeln (`***********************************************************`);

Writeln (`* X * Y * syma * riznuzya * dobytok * chastka * div * mod *`);

Writeln (`***********************************************************`);

Writeln (`* ',x,' * ,`y,' * `,syma,' * `,riznuzya,' * `,dobytok,' * `,

chastka', * `,z_div,' * `,z_mod,' *`);

Writeln (`***********************************************************`);

ReadLn;

nd.

Задача 4

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

Program chuslo;

Uses Crt;

Var

x, y, z, k : integer;

egin

ClrScr;

Write (`Введіть число=>`);

ReadLn(x);

y := x div 1000;

y := y * 100;

z := x mod 100;

k := y + z;

Writeln (k);

ReadLn;

End.

Задача 5

Задано площу кільця й радіус зовнішнього кола. Визначити радіус внутрішнього колa.

Program kilze;

Uses crt;

Var

s1,s2,sk,r1,r2:real;

Begin

clrscr;

write('sk=>');

readln(sk);

write('r1=>');

readln(r1);

s1:=pi*sqr(r1);

s2:=s1-sk;

r2:=sqrt(s2/pi);

writeln('r2=',r2:4:1);

End.

Задача 6

Трикутник заданий координатами своїх вершин. Знайти периметр трикутника.

Program perumetr_trukytnuka;

Uses crt;

Var

x1,x2,x3,y1,y2,y3,a,b,c,p:real;

Begin

clrscr;

write('x1=>');

readln(x1);

write('y1=>');

readln(y1);

write('x2=>');

readln(x2);

write('y2=>');

readln(y2);

write('x3=>');

readln(x3);

write('y3=>');

readln(y3);

a:=sqrt(sqr(x2-x1)+sqr(y2-y1));

b:=sqrt(sqr(x3-x2)+sqr(y3-y2));

c:=sqrt(sqr(x1-x3)+sqr(y1-y3));

p:=a+b+c;

writeln('p=',p:4:2);

End.

Задача 7

Визначено чотиризначне число. Знайти добуток цифр цього числа.

Program Dobutok;

Var

a,b,c,d,n:integer;

Begin

Write('n=>');

Readln(n);

a:=n div 1000;

b:=(n mod 1000) div 100;

c:=(n mod 100) div 10;

d:=n mod 10;

writeln(a*b*c*d);

End.

Задача 8

Елементи кола пронумеровані таким чином:

1-радіус (R),

2-діаметр (D),

3-довжина (L),

4-площа круга (S).

Дан радіус кола. Скласти програму і вивести значення інших елементів даного кола (в тому ж порядку).

Program kolo;

Uses crt;

Var

r,d,l,s:real;

Begin

clrscr;

write('r=>');

readln(r);

write('1 - radiyc=>',r:4:2);

write('2 - diametr=>',2*r:4:2);

write('3 - dovghuna=>',2*pi*r:4:2);

write('4 - plocha=>',pi*sqr(r):4:2);

readln;

End.

Задача 9

Дано катети прямокутного трикутника. Знайти його гіпотенузу і площа.

Program pr_trukytnuk;

Uses crt;

Var

a,b,c,s:real;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

c:=sqrt(sqr(a)+sqr(b));

s:=a*b/2;

write('c=>',c:4:2);

write('s =>',s:4:2);

readln;

End.

Задача 10

Обчислити площу прямокутного трикутника за формулою Герона, якщо задані його сторони.

Program trukytnuk;

Uses CRT

Var

a,b,c,p,s:real;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

c:=sqrt(sqr(a)+sqr(b));

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

writeln('s =>',s:4:2)

readln;

End.

Задача 11

Визначити площу трапеції висотою h, з основами а і b.

Program trapeziya;

Uses CRT

Var

a,b,h,s:real;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('h=>');

readln(h);

s:=(a+b)/2

writeln('s =>',s:4:2)

readln;

End.

Задача 12

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

Program teplota;

Uses CRT

Var

m,c,t1,t2,Q:real;

Begin

clrscr;

write('m=>');

readln(m);

write('c=>');

readln(c);

write('t1=>');

readln(t1);

write('t2=>');

readln(t2);

Q:=m*c*(t2-t1)

writeln('Q =>',Q:4:2)

readln;

End.

Задача 13

Обчислити об'єм паралелепіпеда зі сторонами a, b, c.

Program paralelepiped;

Uses CRT

Var

a,b,c,v:real;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('c=>');

readln(c);

v:=a*b*c

writeln('v =>',v:4:2)

readln;

End.

Задача 14

Поміняйте між собою значення двох змінних А і В, скориставшись третьої змінної R для зберігання тимчасового значення.

Program perestanovka;

Uses CRT

Var

a,b,r:integer;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

r:=a;

a:=b;

b:=r;

writeln('a =>',a)

writeln('b =>',b)

readln;

End.

Задача 15

Поміняти між собою значення двох змінних, не використовуючи третьої.

Program perestanovka;

Uses CRT

Var

a,b:integer;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

a:=a+b;

b:=b+a;

a:=b-a;

b:=b-2*a;

writeln('a=',a);

writeln('b=',b);

readln;

End.

Задача 16

Змінна Х містить тризначне число. Помістити в змінну S суму цифр цього числа.

Program syma;

Var

x,a,b,c,s:integer;

Begin

Write('n=>');

Readln(n);

a:=x div 100;

b:=(x mod 100) div 10;

c:=x mod 10;

s:=a+b+c;

writeln(`s=',s);

End.

Завдання для самостійної роботи

1. За даними сторонам прямокутника обчислити його периметр (P), площа (S) і довжину діагоналей

2. Дано дійсне число, знайдіть цілу частину цього числа і округлите його до найближчого цілого.

3. Знайти площу круга (S) і довжину кола (L) заданого радіуса.

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

a, h, де а - основа трикутника, H - висота, проведена до цієї основии;

a,b,c, де а,b і c - сторони трикутника;

a,b,С, де a,b - сторони трикутника, L С - кут між ними.

5. Обчислити раціональним способом, тобто за мінімальну кількість операцій:

а) у = x5, (тобто за три операції в = ??(x2) 2x);

б) у = x6, (тобто за три операції в = ??(x2x) 2);

в) у = x8, (тобто за три операції у = ((x2) 2) 2).

6. Обчислити об'єм (V) і площа (S) повної поверхні прямокутного паралелепіпеда по довжинах його ребер а, в, с.

7. По даній висоті Н і діаметру основи D прямого кругового циліндри обчислити його площу повної поверхні (S) і об'єм (V).

8. За відомим радіусу обчисліть об'єм і площу поверхні кулі.

9. Складіть програму обчислення довжини висоти трикутника, у якого довжина сторін дорівнює a,b,c.

10 Скласти програму обчислення тиску стовпа рідини, густина якої с, висотою Н на дно посудини, користуючись формулою P = gсH.

11. Складіть програму обчислення виштовхувальної сили, що діє на тіло об'ємом V, наполовину занурене в рідину густиною с, користуючись формулою F = gсV.

12. Складіть програму обчислення потенційної енергії тіла масою m на висоті h відносно Землі, користуючись формулою Eс = gmh.

13. Складіть програму обчислення механічної роботи, коли тіло рівномірно рухається під дією прикладеної до нього сили, користуючись формулою A= FS, де F - прикладена сила, а S - пройдений шлях.

14. Введіть 4-значне число. Перетворити його в 2-значне, відкинувши першу і останню цифру.

15. З клавіатури задається число К. Викинути із запису До цифру, що позначає сотні. Вивести отримане число на екран.

16. Складіть програму обчислення довжини медіан треугольника, у якого довжина сторін дорівнює a, b, c.

2. Алгоритми з розгалуженням

Лінійні алгоритми, це алгоритми, в яких всі етапи рішення задачі виконуються строго послідовно.

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

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

Розрізняють два види умов - прості і складені.

Простою умовою називається вираз, що складається з двох арифметичних виразів або двох текстових величин, пов'язаних одним із знаків:

< - Менше, ніж ...

> - Більше, ніж ...

<= - Менше, ніж ... або дорівнює

>= - Більше, ніж ... або дорівнює

<> - Не дорівнює

= - Дорівнює.

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

Змінна, яка може приймати одне з двох значень: True (правда) або False (брехня), називається булевой (логічного) змінної.

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

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

Логічна операція or дає результат true тоді, коли хоча б один операнд має значення true.

Логічна операція not завжди дає результат, протилежний значенню її операнда.

Логічну операцію and ще називають логічним множенням, а логічну операцію or - логічним додаванням.

Кожна програма повинна здійснювати контроль за допустимостью величин, що беруть участь в обчисленнях. Тут ми стикаємося з розгалуженням нашого алгоритму в залежності від умови. Для реалізації таких умовних переходів у мові Паскаль використовують оператори If і Else, а також оператор безумовного переходу Goto.

У загальному виглядіу повна форма умовного оператора має вигляд:

if <логичний вираз>

then

<оператор 1>

else

<оператор 2>

Умовний оператор працює за наступним алгоритмом:

Спочатку обчислюється значення логічного виразу, розташованого за службовим словом IF. Якщо його результат істина, виконується <оператор 1>, розташований після слова THEN, а дії після ELSE пропускаються; якщо результат невірний, то, навпаки, дії після слова THEN пропускаються, а після ELSE виконується <оператор 2>. Якщо в якості оператора повинна виконатися серія операторів, то вони беруться в операторні дужки begin-End. Конструкція Begin ... End називається складеним оператором.

if <логічний вираз>

then

begin

оператор 1;

оператор 2;

...

End

else

begin

оператор 1;

оператор 2;

...

end;

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

Загальні правила вживання крапки з комою:

1. Кожний опис змінної і визначення константи закінчуються крапкою з комою.

2. Кожен оператор у тілі програми завершується крапкою з комою, якщо відразу за ним не йдуть зарезервовані слова End, Else, Until.

3. Після певних зарезервованих слів, таких, як Then, Else, Var, Const, Begin, ніколи не ставиться крапка з комою.

Неповна форма умовного оператора має наступний вигляд:

if <логічний вираз>

then

<оператор>

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

Часто доводиться розглядати не два, а більшу кількість варіантів. Це можна реалізувати, використовуючи декілька умовних операторів. Коли оператор if з'являється всередині іншого оператора if, вони вважаються вкладеними.

Не рекомендується використовувати більше одного-двох рівнів вкладення if. За другим рівнем вкладення стає важко відновити послідовність перевірки умов кожним умовним оператором.

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

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

Загальна форма запису наступна:

case селектор of

значення1 : оператор (группа операторів);

значення2 : оператор (группа операторів);

. . . . . . . . . . . . . . . . . . . . . .

значенняN : оператор (группа операторів)

else оператор (группа операторів);

end;

Оператор вибору працює таким чином.

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

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

Константи повинні належати до того ж типу, що і селектор.

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

goto мітка;

Після опису мітки її можна використовувати в програмі. Мітка записується перед оператором і відокремлюється від нього двокрапкою. А оператор goto повинен бути розміщений в тому місці програми, звідки виконується перехід. Оператор goto передає управління на оператор із заданою міткою. Оператор goto можна вставляти в будь-яке місце програми.

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

Задача 1

Розв'язати квадратне рівняння.

Program kv_rivnyannya;

Uses CRT

Var

a,b,c:real;

x1,x2:real;

D:real;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('c=>');

readln(c);

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

if D>=0 then

Begin

X1:=(-b+sqrt(D))/(2*a);

X2:=(-b-sqrt(D))/(2*a);

writeln('x1=>',x1:4:2);

writeln('x2=>',x2:4:2);

end

else

writeln(`Nema koreniv y rivnyannya'

readln;

End.

Задача 2

Визначити номер квадранта, в якому розміщено точка М(х,у).

Program koordunatu;

Var

x,y:real;

Begin

Write( 'x=>' );

readln(x);

Write( 'y=>' );

readln(y);

if (x=0) and (y=0) then

writeln('M(0,0)')

else

if x=0 then

writeln('OY')

else

if y=0 then

writeln('OX');

if (x>0) and (y>0) then writeln('І');

if (x<0) and (y>0) then writeln('II');

if (x<0) and (y<0) then writeln('III');

if (x>0) and (y<0) then writeln('IV')

End.

Задача 3

Дано два дійсних числа Х і У. Менше з них замінити їх напівсумою, а більше - їх подвоєним добутком. Результат вивести на екран монітора.

Program porivnyannya;

Uses CRT

Var

x,y:real;

Begin

clrscr;

write('x=>');

readln(x);

write('y=>');

readln(y);

if x>y then

Begin

x:=2*x*y;

y:=(x+y)/2;

end

else

Begin

y:=2*x*y;

x:=(x+y)/2;

end;

writeln(`x=',x:4:2);

writeln(`y=',y:4:2);

readln;

End.

Задача 4

Дано три дійсних числа. Піднести до квадрату лише додатні числа. Результат вивести на екран монітора.

Program dodat_chusla;

Uses crt;

Var

a,b,c:real;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('c=>');

readln(c);

if a>0 then a:=sqr(a);

if b>0 then b:=sqr(b);

if c>0 then c:=sqr(c);

writeln('a=',a:4:2);

writeln('b=',b:4:2);

writeln('c=',c:4:2);

readln;

End.

Задача 5

Залежно від розміру суми, розмір податку з неї розраховується за такою схемою: якщо сума не перевищує деяку величину а , то податок не вираховується, якщо сума більша за а , але не перевищує b ,то податок становить 10%, якщо сума більша за b , але не перевищує с , то податок становить 25% і якщо сума більша за с , то податок становить 50%. Визначити, який податок буде нарахований із суми розміром S.

Program podatok;

Var

a, b, c s,p: real;

Begin

writeln(`Введить числа a, b, c');

readln(a,b,c);

writeln(`Введите числа суму');

readln(s);

if (s<=a) then p:=0

if (s>a) and (s<=b) then p:=s*0.1;

if (s>b) and (s<=c) then p:=s*0.25;

if (s>c) then p:=s*0.5;

writeln(`p=',p:5:2);

readln;

End.

Задача 6

Дано цілі числа a, b, c. Якщо a ? b ? c, то всі числа замінити їх квадратами, якщо a> b> c, то кожне число замінити найбільшим з них, в іншому разі змінити знак кожного числа.

Program porivnyannya;

Var

a, b, c : integer;

Begin

writeln(`Введить числа a, b, c');

readln(a,b,c);

if (a<=b) and (b<=c) then

begin

a:=sqr(a);

b:=sqr(b);

c:=sqr(c);

end

else

if (a>b) and (b>c) then

begin

b:=a;

c:=a;

end

else

begin

a:=-a;

b:=-b;

c:=-c;

end

writeln(a,b,c);

readln;

End.

Задача 7

Дано три різні числа, найти среднє з них. Среднім називається число, яке більше найменшого з даних чисел, але меньше найбільшого.

Program seredne;

Var

a, b, c, ser: integer;

Begin

writeln(`Введить числа a, b, c');

readln(a,b,c);

if ((a>b) and (b>c))or((a<b)and(b<c)) then ser:=b;

if ((b>a) and (a>c))or((b<a)and(a<c)) then ser:=a;

if ((a>c) and (c>b))or((c>a)and(c<b)) then ser:=c;

writeln('seredne=',ser);

readln;

End.

Задача 8

Визначити, чи потрапляє точка "A" з координатами (х, у) всередину кола радіуса R. Центр кола співпадає з початком координат.

Program kolo;

Var

r,x,y : integer;

Begin

writeln(`Введить числа r,x,y');

readln(r,x,y);

if r>sqrt(sqr(x)+sqr(y)) then

writeln(`Tochka A popadae v sereduny kola')

Else

if r=sqrt(sqr(x)+sqr(y)) then

writeln(`Tochka A znachodutsya na koli')

Else

if r<sqrt(sqr(x)+sqr(y)) then

writeln(`Tochka A znachodutsya poza kolom');

readln;

End.

Задача 9

Два квадратних рівняння задано своїми коефіцієнтами a1, b1, c1 та a2, b2, c2, де a1<>0 і a2<>0. Визначити:

1. Чи мають ці рівняння одинакові пари коренів;

2. Чи збігаються відношення між меншими і більшими коренями обох рівнянь;

3. Чи можуть бути корені обох рівнянь сторонами деякого прямокутника.

Program kv_rivnyannya1;

Uses Crt;

Var

a1,b1,c1,a2,b2,c2:real;

x11,x12,x21,x22:real;

D1,D2:real;

Begin

clrscr;

write('a1=>');

readln(a1);

write('b1=>');

readln(b1);

write('c1=>');

readln(c1);

write('a2=>');

readln(a2);

write('b2=>');

readln(b2);

write('c2=>');

readln(c2);

D1:=sqr(b1)-4*a1*c1;

if D1>=0 then

Begin

X11:=(-b1+sqrt(D1))/(2*a1);

X12:=(-b1-sqrt(D1))/(2*a1);

end

else

writeln('Nema koreniv y pershogo rivnyannya');

D2:=sqr(b1)-4*a1*c1;

if D2>=0 then

Begin

X21:=(-b2+sqrt(D2))/(2*a2);

X22:=(-b1-sqrt(D2))/(2*a2);

end

else

writeln('Nema koreniv y drygogo rivnyannya');

if ((x11=x21)and(x12=x22))or((x11=x22)and(x12=x21)) then

writeln('Rivnyannya majt odunakovi paru koreniv');

if x11/x21=x12/x22 then

writeln('Vidnoshennya migh menshumu І bilshumu korenyamu obox rivnyann

zbigajtsya');

if ((x11>0)and(x12>0)and(x21>0)and(x22>0)) and((x11=x21)and(x12=x22)) or((x11=x22)and(x12=x21)) then

writeln('Koreni rivnyann moghyt bytu storonamu pryamokytnuka');

readln;

End.

Задача 10

Дано дійсні додатні числа a, b, c, х, у. З'ясувати, чи пройде цеглина з ребрами a, b, c в прямокутний отвір зі сторонами х, у. Просовувати цеглу в отвір дозволяється тільки так, щоб кожна з його ребер було паралельно або перпендикулярно кожної зі сторін отвору.

Program kv_rivnyannya1;

Uses Crt;

Var

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

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('c=>');

readln(c);

write('x=>');

readln(x);

write('y=>');

readln(y);

if ((a<=x)and(b<=y))or((a<=y)and(b<=x))or

((a<=x)and(c<=y))or((a<=y)and(c<=x))or((c<=x)and(b<=y))or((c<=y)and(b<=x)) then

writeln('Proshtovchnytu zegluny moghna')

else

writeln('Proshtovchnytu zegluny ne moghna');

readln;

End.

Задача 11

Послуги стаціонарного телефонного зв'язку сплачують за такими правилом. Кожного місяця, сплачуючи абонентну плату в розмірі с1 грн., користувач отримує х безоплатних хвилин. Якщо час розмов більший за безоплатний (х хв.), але не перевищує у хвилин, то його оплачують з розрахунку с2 грн. за 1 хв розмови. Якщо ж абонент протягом місяця користувався телефонним зв'язком понад у хв, він сплачуватиме свої розмови з розрахунку с3 грн. за кожну хвилину розмови. Необхідно розрахувати, яку суму має сплатити абонент за користування стаціонарним телефоном.

Program telefon;

Uses Crt;

Var

c1,c2,c3,x,y,s,t:real;

Begin

clrscr;

write('c1=>');

readln(c1);

write('c2=>');

readln(c2);

write('c3=>');

readln(c3);

write('x=>');

readln(x);

write('y=>');

readln(y);

write('t=>');

readln(t);

if t<x then s:=c1;

if (t>x)and(t<y) then s:=c1+t*c2;

if t>y then s:=c1+t*c3;

writeln('S=',s:4:2);

readln;

End.

Задача 12

Дано двозначне число n. Необхідно створити інтерфейс та визначити:

1. Чи є сума його цифр двозначним числом;

2. Чи кількість одиниць цього числа більша за кількість його десятків.

Program dv_chuslo;

Uses Crt;

Var

n,a,b,s:integer;

Begin

TextBackGround(7);

Clrscr;

window(2,2,78,8);

TextBackGround(1);

Clrscr;

TextColor(14);

GoToXY(27,2);

Writeln('Yvedit dvoznachne chuslo');

GoToXY(37,5);

Write('n=');

readln(n);

window(3,9,79,9);

TextBackGround(0);

Clrscr;

window(79,3,79,8);

TextBackGround(0);

Clrscr;

window(2,11,78,15);

TextBackGround(4);

Clrscr;

a:=n div 10;

b:=n mod 10;

s:=a+b;

TextColor(15);

GoToXY(23,3);

Write('Syma zufr chusla dorivnje: ',s);

TextColor(15);

GoToXY(23,5);

if (s div 10)<>0 then Writeln('Syma zufr - dvoznachne chuslo')

else Writeln('Syma zufr - ne dvoznachne chuslo');

window(3,16,79,16);

TextBackGround(0);

Clrscr;

window(79,12,79,15);

TextBackGround(0);

Clrscr;

window(2,18,78,23);

TextBackGround(4);

Clrscr;

TextColor(15);

GoToXY(18,4);

if b>a then Writeln('Kilkist odunuz chusla bilsha za kilkist desyatkiv')

else Writeln('Kilkist odunuz chusla mensha za kilkist desyatkiv');

window(3,24,79,24);

TextBackGround(0);

Clrscr;

window(79,18,79,24);

TextBackGround(0);

Clrscr;

readln;

End.

Задача 13

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

Program chuslo_palidr;

Uses Crt;

Var

x,y,a,b,c: integer;

Begin

TextBackGround(7);

Clrscr;

window(2,2,78,13);

TextBackGround(1);

Clrscr;

TextColor(14);

GoToXY(27,5);

Write ('Yvedit chuslo=>');

ReadLn(x);

a:=x div 100;

b:=(x mod 100) div 10;

c:=(x mod 10);

y:=c*100+b*10+a;

window(3,14,79,14);

TextBackGround(0);

Clrscr;

window(79,3,79,14);

TextBackGround(0);

Clrscr;

window(2,16,78,23);

TextBackGround(4);

Clrscr;

TextColor(15);

GoToXY(26,4);

if x=y then Writeln ('yes - chuslo palidrom' )

Else Writeln ('No - chuslo ne palidromu');

window(3,24,79,24);

TextBackGround(0);

Clrscr;

window(79,17,79,24);

TextBackGround(0);

Clrscr;

ReadLn;

End.

Задача 14

Розмір наданної знижки залежить від вартості придбаних у магазині товарів. Якщо загальна вартість покупки менша 201 грн., знижка не надають. Якщо покупець придбав товари на суму від 201 грн. до 501 грн., то він отримає знижку х % . Якщо ж загальна вартість покупки перевищує 501 грн., його знижка дорівнюватиме у %.

Program znughka;

Uses Crt;

Var

x,y: integer;

s,s1,s2: real;

Begin

TextBackGround(7);

Clrscr;

window(2,2,39,23);

TextBackGround(3);

Clrscr;

TextColor(14);

GoToXY(2,4);

Writeln ('Vidsotok znughku, yaksco pokypka vid');

writeln;

Write(' 201 do 501 grn. ==>');

read(x);

writeln;

writeln;

Writeln (' Vidsotok znughku, yaksco pokypka vid');

writeln;

Write(' 501 grn. ==>');

read(y);

writeln;

writeln;

writeln;

Writeln;

Write(' Zagalna vartist pokypku ==> ');

readln(s);

window(3,24,40,24);

TextBackGround(0);

Clrscr;

window(40,3,40,24);

TextBackGround(0);

Clrscr;

window(42,2,78,23);

TextBackGround(4);

Clrscr;

TextColor(15);

GoToXY(2,4);

Write('Vam nadano znughky');

if s<201 then

begin

Writeln(' ',0,'%');

s1:=s*0;

end

else

if s<501 then

begin

Writeln(' ',x,'%');

s1:=s*x/100;

end

else

begin

Writeln(' ',y,'%');

s1:=s*y/100;

end;

writeln;

writeln;

writeln;

Writeln (' Syma znughku');

writeln;

Writeln(' stanovut ',s1:4:2,' grn. ');

writeln;

writeln;

writeln;

writeln;

Writeln;

s2:=s-s1;

Writeln (' Splatutu do kasu ', s2:4:2,'grn.');

window(43,24,79,24);

TextBackGround(0);

Clrscr;

window(79,3,79,24);

TextBackGround(0);

Clrscr;

ReadLn;

End.

Задача 15

Необхідно визначити вартість міжміської телефонної розмови за її тривалістю у хвилинах та кодом міста абонента. Вартість хвилини розмови залежить від відстані між містами, її визначають за введеним кодом. Розробити зручний інтерфейс програми.

Program vart_telefon;

Uses Crt;

Var

k,tr: integer;

vart: real;

Begin

TextBackGround(7);

Clrscr;

window(2,2,40,24);

TextBackGround(3);

Clrscr;

TextColor(14);

GoToXY(2,4);

Writeln (' Misto Kod');

writeln;

Writeln('--------------------------------------');

writeln;

writeln(' Brovaru 4494 0.4');

Writeln;

writeln(' Binnuzya 432 0.8');

Writeln;

writeln(' Dnipropetrovsk 56 1.2');

Writeln;

writeln(' Lviv 322 1.0');

Writeln;

writeln(' Ternopil 352 1.0');

Writeln;

writeln(' Chernivzi 372 1.2');

Writeln;

writeln(' Charkiv 57 1.0');

Writeln;

Writeln('--------------------------------------');

writeln;

writeln(' Vartist chvulunu, grn.');

window(42,2,78,12);

TextBackGround(2);

Clrscr;

TextColor(14);

GoToXY(4,3);

Write(' Yvedit kod mista => ');

Readln(k);

writeln;

Writeln;

Writeln;

Writeln(' Yvedit truvalist');

Writeln;

Write(' rozmovu y chvulunax => ');

Readln(tr);

window(42,14,78,24);

TextBackGround(4);

Clrscr;

TextColor(15);

GoToXY(4,4);

Case k of

4494: vart:=0.4*tr;

432: vart:=0.8*tr;

57,322,352: vart:=tr;

56,372: vart:=1.2*tr;

Else

begin

writeln('Informaziya pro vartist rozmovu ');

writeln;

writeln(' z zum mistom nevidoma');

writeln;

end;

end;

if vart<>0 then

begin

Writeln(' Vartist rozmovu ');

writeln;

writeln(' stanovut ',vart:4:2,' grn.');

end;

ReadLn;

End.

Задача 16

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

Program rozklad_yrokiv;

Uses Crt;

Label a,b,c,d,e,f,g,h;

Var

k: integer;

Begin

Clrscr;

TextBackGround(7);

Clrscr;

window(2,2,79,25);

TextBackGround(2);

Clrscr;

TextColor(14);

GoToXY(7,4);

write('Yvedit nomer dnya tughdnya => ');

readln(k);

writeln;

Writeln (' Rozklad yrokiv');

writeln;

Writeln('--------------------------------------');

writeln;

Case k of

1: goto a;

2: goto b;

3: goto c;

4: goto d;

5: goto e;

6: goto f;

7: goto g;

Else

writeln('Ze ne den tughdnya');

end;

a: writeln(' Ponedilok');

Writeln;

Writeln(' 1. Chimiya');

Writeln;

Writeln(' 2. Chimiya');

Writeln;

Writeln(' 3. Algebraa');

Writeln;

Writeln(' 4. Algebra');

Writeln;

Writeln(' 5. Fizkyltyra');

Writeln;

Writeln(' 6. Informatuka');

Writeln;

Writeln(' 7. Informatuka');

Writeln;

goto h;

b: writeln(' Vivtorok');

Writeln;

Writeln(' 1. Chimiya');

Writeln;

Writeln(' 2. Chimiya');

Writeln;

Writeln(' 3. Algebraa');

Writeln;

Writeln(' 4. Algebra');

Writeln;

Writeln(' 5. Fizkyltyra');

Writeln;

Writeln(' 6. Informatuka');

Writeln;

Writeln(' 7. Informatuka');

Writeln;

goto h;

c: writeln(' Sereda');

Writeln;

Writeln(' 1. Chimiya');

Writeln;

Writeln(' 2. Chimiya');

Writeln;

Writeln(' 3. Algebraa');

Writeln;

Writeln(' 4. Algebra');

Writeln;

Writeln(' 5. Fizkyltyra');

Writeln;

Writeln(' 6. Informatuka');

Writeln;

Writeln(' 7. Informatuka');

Writeln;

goto h;

d: writeln(' Chetver');

Writeln;

Writeln(' 1. Chimiya');

Writeln;

Writeln(' 2. Chimiya');

Writeln;

Writeln(' 3. Algebraa');

Writeln;

Writeln(' 4. Algebra');

Writeln;

Writeln(' 5. Fizkyltyra');

Writeln;

Writeln(' 6. Informatuka');

Writeln;

Writeln(' 7. Informatuka');

Writeln;

goto h;

e: writeln(' Pyatnuzya');

Writeln;

Writeln(' 1. Chimiya');

Writeln;

Writeln(' 2. Chimiya');

Writeln;

Writeln(' 3. Algebraa');

Writeln;

Writeln(' 4. Algebra');

Writeln;

Writeln(' 5. Fizkyltyra');

Writeln;

Writeln(' 6. Informatuka');

Writeln;

Writeln(' 7. Informatuka');

Writeln;

goto h;

f: writeln(' Sybota');

Writeln;

Writeln(' Vuxidnuj den');

goto h;

g: writeln(' Nedilya');

Writeln;

Writeln(' Vuxidnuj den');

h: ReadLn;

End.

Задача 17

Вартість квитка на «Льодову арену» залежить від часу початку сеансу. Вартість дитячого квитка становить половину вартості квитка для дорослого. Якщо у відвідувача ковзанки є дисконтна картка, купуючи квиток, він отримує знижку, яка становить х%. Необхідно визначити суму коштів, які повинен сплатити відвідувач ковзанки в касу.

Program vart_kvutka;

Uses Crt;

label 1;

Var

K1,k2,t,x,d: integer;

vart,s: real;

Begin

TextBackGround(7);

Clrscr;

window(2,2,40,24);

TextBackGround(3);

Clrscr;

TextColor(14);

GoToXY(1,2);

Writeln (' Chas pochatky - Chas zakinch seansy');

writeln;

Writeln('-------------------------------------');

writeln(' 8:00 - 9:30 ');

writeln(' 10:00 - 11:00 25 grn.');

writeln(' 12:00 - 13:00 ');

writeln;

writeln(' 14:00 - 15:00 30 grn.');

writeln(' 16:00 - 17:00 ');

writeln;

writeln(' 18:00 - 19:00 ');

writeln(' 19:00 - 20:00 35 grn.');

writeln(' 20:00 - 21:00 ');

Writeln;

writeln(' 22:00 - 23:30 25 grn.');

Writeln('-------------------------------------');

writeln(' Vartist kvutka, grn.');

writeln;

writeln(' Vidsotok znughku, yaksco j ');

writeln;

write(' duskontna kartka => ');

readln(x);

window(42,2,78,12);

TextBackGround(2);

Clrscr;

TextColor(14);

GoToXY(2,3);

Write('Yvedit chas pochatky seansy =>');

Readln(t);

Writeln;

Write(' Kilkist dutyachux kvutkiv => ');

Readln(k1);

Writeln;

Write(' Kilkist doroslux kvutkiv => ');

Readln(k2);

Writeln;

Write(' Y vas j duskontna kartka => ');

Readln(d);

Writeln;

window(42,14,78,24);

TextBackGround(4);

Clrscr;

TextColor(15);

GoToXY(1,3);

Case t of

8,10,12,22: vart:=25*k2+(25*k1)/2;

14,16: vart:=30*k2+(30*k1)/2;

18,19,20: vart:=35*k2+(35*k1)/2;

Else

begin

TextColor(15);

GoToXY(1,5);

writeln(' Informaziya pro takuj chas ');

writeln;

writeln(' pochatky seansy nevidoma');

writeln;

goto 1;

end;

end;

If d=1 then

begin

s:=vart*x/100;

writeln;

Write(' Vu majte znughky y rozmiri=>',s:4:2,'grn.' );

end

Else

Write(' Y vas nema znughku');

vart:=vart-s;

if vart<>0 then

begin

writeln;

writeln;

writeln;

Writeln(' Vartist kvutka stanovut ',vart:4:2,'grn.');

end;

1: ReadLn;

End.

Задача 18

Необхідно перевести час наданий у секундах в ті одиниці часу, що обере користувач.

Program odunuzi_chasy;

Uses Crt;

Var

N,s: longint;

r,m,d,g,ch:real;

Begin

TextBackGround(7);

Clrscr;

window(2,2,39,23);

TextBackGround(3);

Clrscr;

TextColor(14);

GoToXY(4,5);

Writeln (' Odunuwi vumirjvannya chasy: ');

writeln;

Writeln('--------------------------------------');

writeln;

writeln(' 1 - chvulunu');

Writeln;

writeln(' 2 - godunu');

Writeln;

writeln(' 3 - doba');

Writeln;

writeln(' 4 - misyaz');

Writeln;

writeln(' 5 - roku');

writeln;

Writeln('--------------------------------------');

window(3,24,40,24);

TextBackGround(0);

Clrscr;

window(40,3,40,24);

TextBackGround(0);

Clrscr;

window(42,2,78,12);

TextBackGround(2);

Clrscr;

TextColor(14);

GoToXY(4,3);

Writeln(' Yvedit nomer odunuz');

Write(' vumirjvannya chasy => ');

Readln(n);

writeln;

Writeln;

Writeln;

Writeln(' Yvedit znachennya chasy');

Write(' y sekyndach => ');

Readln(s);

window(43,13,79,13);

TextBackGround(0);

Clrscr;

window(79,3,79,13);

TextBackGround(0);

Clrscr;

window(42,15,78,23);

TextBackGround(4);

Clrscr;

TextColor(15);

GoToXY(10,4);

Case n of

1: writeln(s,' c = ',s/60:4:2,' ch');

2: writeln(s,' c = ',s/3600:4:2,' godun');

3: writeln(s,' c = ',s/(24*3600):4:2,' dobu');

4: writeln(s,' c = ',s/(30*24*3600):4:2,' misyziv');

5: writeln(s,' c = ',s/(365*3600):4:2,' rokiv');

Else

writeln('Inshuch odunuz vumirjvannya chasy nema');

end;

window(43,24,79,24);

TextBackGround(0);

Clrscr;

window(79,16,79,23);

TextBackGround(0);

Clrscr;

ReadLn;

End.

Завдання для самостійної роботи

1. Дано довільні числа a, b та с. Якщо не можна побудувати трикутник з такими довжинами сторін, то надрукувати 0, інакше надрукувати відповідне повідомлення в залежності від того, рівносторонній це трикутник, рівнобедрений або який-небудь інший.

2. Дано число х. Надрукувати в порядку зростання числа x, 1 + | x | і (1 + х2).

3. Дано числа a1, b1, c1, a2, b2, c2. Надрукувати координати точки перетину прямих, описуваних рівняннями a1х + b1у = c1 і a2х + b2у = c2, або повідомити, що прямі співпадають, не перетинаються або зовсім не існують.

4. Написати алгоритм знаходження числа днів у місяці, якщо дано: Номер місяця n - ціле число а, рівне 1 для високосного року і дорівнює 0 у противному випадку.

5. За номером дня тижня вивести його назву.

6. Залежно від того введена відкрита дужка чи закрита, надрукувати "відкрита кругла дужка" або "закрита фігурна дужка". (Враховувати круглі, квадратні, фігурні дужки).

7. Напишіть програму, яка по введеному числу з проміжку 0 .. 24, визначає час доби.

8. Напишіть програму, яка по введеному номеру місяця високосного або невисокосного року, виводить кількість днів у місяці.

9. Складіть програму знаходження добутку двох найбільших з трьох введених з клавіатури чисел.

10. Запитати сторони трикутника і визначити, чи є він різнобічним, рівнобедреним або рівностороннім. Врахувати умова: третя сторона не повинна перевищувати суму двох інших, інакше трикутник не існує.

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

а) max (x + y + z, xyz) +3;

b) min (x2 + y2, y2 + z2) -4;

Значення змінних x, y, z вводяться з клавіатури.

12. Запропонуйте користувачеві ввести число з клавіатури. Якщо число дорівнює нулю, виведіть слово "нуль", якщо число додатнє, виведіть слово "додатнє", якщо число від'ємне, виведіть слово " від'ємне ".

13. Надрукувати програму виведення днів тижня за номером.

14. Потрібно написати програму, яка обчислює значення функції (у = f (x)):

у = x - 2, якщо x> 0,

y = 0, якщо x = 0,

y = | x |, якщо x <0.

15. Знайти мінімальне з трьох чисел.

16. Дано цілі числа a, b, c. Якщо a ? b ? c, то всі числа замінити їх квадратами, якщо a> b> c, то кожне число замінити найбільшим з них, інакше змінити знак кожного числа.

3. Циклічні алгоритми

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

Циклічний алгоритм - це алгоритм, що містить один або кілька циклів.

В мові Паскаль існують зручні конструкції для організації циклів:

* цикл з передумовою;

* цикл з післяумовою;

* цикл з лічильником.

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

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

Загальна форма запису наступна:

while <булево выражение> do

begin

група операторів

end;

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

При використанні циклу з передумовою треба пам'ятати наступне:

1. значення умови виконання циклу має бути визначено до початку циклу;

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

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

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

Загальна форма запису наступна:

repeat

оператори оператори

until <умова>;

Є невелика відмінність в організації циклу repeat в порівнянні з while: для виконання в циклі repeat декількох операторів не слід поміщати ці оператори в операторні дужки begin ... End. Зарезервовані слова repeat і until діють як операторні дужки.

Конструкція repeat ... until працює аналогічно циклу while. Різниця полягає в тому, що цикл while перевіряє умову до виконання дій, у той час як repeat перевіряє умову після виконання дії. Це гарантує хоча б одне виконання дії до завершення циклу.

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

Загальна форма запису циклу з лічильником

for і := A to B do

begin

. . .

end;

for і := A downto B do

begin

. . .

end;

Змінна і - керуюча змінна або змінна циклу,

А - початкове значення змінної циклу,

В - кінцеве значення змінної циклу.

При переході до обробки оператора циклу for керуючій змінні присвоюється задане початкове значення. Потім у циклі виконується оператор (або складений оператор), кожного разу після виконання оператора керуюча змінна збільшується на 1 (для for ... to) або зменшується на 1 (для for ... downto). Цикл завершується при досягненні керуючої змінної свого кінцевого значення.

Тип керуючої змінної не повинен бути real.

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

Задача 1

Сума кредиту становить S грошових одиниць, які позичив банк на n років під х% річних. Кредит необхідно повертати однаковими частинами раз на рік, сплачуючи банку крім цього відсоток за користування ще не повернутими коштами.

Program bank;

Uses Crt;

Var

N,r,v_s: integer;

K,tsp,v_sp:real;

Begin

TextBackGround(7);

Clrscr;

window(2,2,29,23);

TextBackGround(3);

Clrscr;

TextColor(14);

GoToXY(2,5);

write('Syma kreduty => ');

Readln(k);

writeln;

writeln;

write(' Bankivskuj vidsotok => ');

readln(v_s);

Writeln;

writeln;

Writeln;

Write (' Termin kredutyvannya => ');

readln(n);

Writeln;

window(3,24,30,24);

TextBackGround(0);

Clrscr;

window(30,3,30,24);

TextBackGround(0);

Clrscr;

window(32,2,78,23);

TextBackGround(2);

Clrscr;

TextColor(14);

GoToXY(1,1);

Tsp:=k/n;

For r:=1 to n do

begin

Writeln(r,' rik');

Writeln('Chastuna tila kreduta dlya povernennya:', tsp:4:2);

V_sp:=k*v_s/100;

Writeln('Oplata za korustyvannya kredutom: ', v_sp:4:2);

Writeln('Zagalna vuplata za ',r,' rik: ',tsp+v_sp:4:2);

K:=k-tsp;

Writeln;

End;

window(33,24,79,24);

TextBackGround(0);

Clrscr;

window(79,3,79,23);

TextBackGround(0);

Clrscr;

ReadLn;

End.

Задача 2

Необхідно визначити кількість цифр натурального числа n.

Program kil_zufr;

Uses Crt;

Var

N,k,і: longint;

Begin

Clrscr;

Write(`Yvedit chuslo =>');

Readln(n);

і:=0;

While n<>0 do

Begin

N:=n div 10;

і:=і+1;

End;

Writeln(`Chuslo iz `,І,' zufr');

ReadLn;

End.

Задача 3

Для заданого цілого числа x обчислити значення функції:

.

Program fynkziya;

Uses Crt;

Var

y:real;

x,і: integer;

Begin

Clrscr;

Write(`Yvedit chuslo =>');

Readln(x);

y:=0;

For і:=1 to 9 do

y:=y+(x-і)/(і+1);

Writeln(`y=',y:3:2);

ReadLn;

End.

Задача 4

Необхідно вивести на екран значення квадратів натуральних чисел від 1 до n, де n>1 - натуральне число, значення якого задає користувач.

Program kvadrat;

Uses crt;

Var

n,і,kv:integer;

Begin

TextBackGround(7);

clrscr;

window(7,2,73,9);

TextBackGround(5);

clrscr;

TextColor(14);

GotoXY(20,4);

write('Yvedit natyralne chuslo n => ');

readln(n);

window(8,10,74,10);

TextBackGround(0);

clrscr;

window(74,3,74,9);

TextBackGround(0);

clrscr;

window(11,12,69,23);

TextBackGround(4);

clrscr;

TextColor(14);

GotoXY(2,4);

write(' Chuslo Kvadrat chusla ');

writeln(' ------------------------------------');

і:=1;

while і<=n do

begin

writeln(' ',і,' ',sqr(і));

і:=і+1;

end;

window(12,24,70,24);

TextBackGround(0);

clrscr;

window(70,13,70,23);

TextBackGround(0);

clrscr;

readln

End.

Задача 5

Необхідно визначити суму, добуток та середнє арифметичне послідовності цілих чисел, значення яких уводить користувач з клавіатури. Кількість чисел у послідовності невідома. Ознакою закінчення введення числових значень є введення 0.

Program kvadrat;

Uses crt;

Var

n,s,d,k:integer;

sr:real;

Begin

TextBackGround(7);

clrscr;

window(7,2,73,8);

TextBackGround(5);

clrscr;

TextColor(14);

GotoXY(20,2);

writeln('Vuznachennya symu, dobytky ');

writeln;

writeln(' ta serednjgo arufmetuchnogo ');

writeln;

writeln(' chuslovoj poslidovnosti ');

window(8,9,74,9);

TextBackGround(0);

clrscr;

window(74,3,74,8);

TextBackGround(0);

clrscr;

window(2,11,39,23);

TextBackGround(2);

clrscr;

TextColor(15);

GotoXY(2,2);

write('Yvedit znachennya ');

writeln('nastypnogo ');

writeln(' elementa poslidovnosti' );

writeln(' (0 - zakinchennya vvedennya) ');

s:=0;

d:=1;

k:=1;

write(' => ');

readln(n);

repeat

s:=s+n;

d:=d*n;

k:=k+1;

write(' => ');

readln(n);

until n=0;

sr:=s/k;

window(3,24,40,24);

TextBackGround(0);

clrscr;

window(40,12,40,23);

TextBackGround(0);

clrscr;

window(42,11,78,23);

TextBackGround(4);

clrscr;

TextColor(15);

GotoXY(2,4);

writeln(' Syma: ',s);

writeln;

writeln;

writeln(' Dobytok: ',d);

writeln;

writeln;

writeln(' Serednj arufmetuchne: ',sr:3:1);

window(43,24,79,24);

TextBackGround(0);

clrscr;

window(79,12,79,23);

TextBackGround(0);

clrscr;

readln

End.

Задача 6

Деяка область нашої країни поділена на n районів. Восени кожен район передає до області такі відомості:

· Площу (у гектарах), засіяну пшеницею;

· Середню урожайність пшениці (у центнерах з гектара).

Визначити загальний урожай пшениці (у центнерах), зібраний областю за рік, та середню урожайність по області.

Program yroghaj;

Uses crt;

Var

n,p,y,s,d,і:integer;

sr:real;

Begin

TextBackGround(7);

clrscr;

window(7,2,73,4);

TextBackGround(5);

clrscr;

TextColor(14);

GotoXY(20,2);

write('Kilkist rajoniv v oblasti ');

read(n);

window(8,5,74,5);

TextBackGround(0);

clrscr;

window(74,3,74,4);

TextBackGround(0);

clrscr;

window(2,7,39,23);

TextBackGround(2);

clrscr;

TextColor(15);

GotoXY(1,2);

s:=0;

d:=0;

for і:=1 to n do

begin

writeln(' ',і,' rajon');

write(' Plosha zasiyana pshenuzej => ');

readln(p);

write(' Serednya yroghajnist pshenuzi => ');

readln(y);

writeln;

s:=s+p;

d:=d+y*p;

end;

sr:=d/s;

window(3,24,40,24);

TextBackGround(0);

clrscr;

window(40,8,40,23);

TextBackGround(0);

clrscr;

window(42,7,78,23);

TextBackGround(4);

clrscr;

TextColor(15);

GotoXY(2,4);

writeln('Zagalna plosha oblasti, ');

writeln;

writeln(' zasiyana pshenuzej: ',s);

writeln;

writeln;

writeln(' Zagalnuj yroghaj pshenuzi : ',d);

writeln;

writeln;

writeln(' Serednj yroghajnist ' );

writeln;

writeln(' pshenuzi po oblasti: ',sr:3:2);

window(43,24,79,24);

TextBackGround(0);

clrscr;

window(79,8,79,23);

TextBackGround(0);

clrscr;

readln

End.

Задача 7

Визначити суму кубів натуральних чисел від n до m (n<m).

Program sym_kyb;

Uses crt;

Var

n,m,s:integer;

Begin

clrscr;

Writeln('Yvedit chusla n і m');

readln(n,m);

s:=0;

while n<=m do

begin

s:=s+n*sqr(n);

n:=n+1;

end;

writeln('Syma kybiv = ',s);

readln;

End.

Задача 8

Визначити суму квадратів цілих чисел від одиниці до х (значення x>1 задає користувач).

Program sym_kvad;

Uses crt;

Var

і,x,s:integer;

Begin

clrscr;

Writeln('Yvedit chuslо x');

readln(x);

s:=0;

for і:=1 to x do

s:=s+sqr(і);

writeln('Syma kvadrativ = ',s);

readln;

End.

Задача 9

Визначити добуток цілих чисел від а до с (значення цілих чисел а та с задає користув...


Подобные документы

  • Алгоритми розв’язання задач у вигляді блок–схем. Використання мови програмування MS VisualBasic for Application для написання програм у ході вирішення задач на одномірний, двовимірний масив, порядок розв’язання задачі на використання символьних величин.

    контрольная работа [742,9 K], добавлен 27.04.2010

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

    курсовая работа [46,9 K], добавлен 16.09.2010

  • Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.

    курсовая работа [232,2 K], добавлен 12.02.2013

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

    реферат [30,0 K], добавлен 13.11.2010

  • Методика та порядок програмування алгоритмів циклічної структури із заданим числом повторень за допомогою мови програмування VAB. Алгоритм роботи з одновимірними масивами. Програмування алгоритмів із структурою вкладених циклів, обробка матриць.

    курсовая работа [27,7 K], добавлен 03.04.2009

  • Теоретичні аспекти програмування мовою Pascal. Основні поняття та елементи мови. Розділи оголошення сталих і змінних. Стандартні та нестандартні типи даних. Основні операції, стандартні функції та процедури, прості програми. Розгалуження, цикли, масиви.

    курсовая работа [122,5 K], добавлен 21.10.2012

  • Основні переваги програмування на мові Delphi. Використання стандартних операторів при створенні інтерфейсу користувача. Вибір складу технічних і програмних засобів, організація вхідних і вихідних даних. Розробка програми, блок-схеми та тексту програми.

    реферат [316,1 K], добавлен 22.01.2013

  • BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.

    курсовая работа [325,8 K], добавлен 12.06.2011

  • Застосування циклічних алгоритмів для створення циклів за допомогою умовного або безумовного переходів. Цикли з параметром та умовою (приклади). Використання операторів мови програмування Паскаль для організації повторюваних послідовностей дій (циклів).

    контрольная работа [435,9 K], добавлен 02.06.2012

  • Побудова блок-схем алгоритмів програм. Створення блок схем алгоритмів за допомогою FCEditor. Експорт блок-схеми в графічний файл. Огляд програмних та апаратних засобів. Мови програмування високого рівня. Цикли та умовний оператор IF з лічильником.

    дипломная работа [1,4 M], добавлен 15.12.2013

  • Стандартні розміри чисел при програмуванні на мові Асемблера. Робота з дробовими числами, використання математичного сопроцесора або його емулятора. Створення програми, яка б перетворювала ціле число в дробове і навпаки, а також функції [x], {x}, |X|.

    курсовая работа [22,0 K], добавлен 12.08.2009

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

    контрольная работа [587,3 K], добавлен 21.04.2011

  • Розв’язок багатокритеріальної задачі лінійного програмування з отриманням компромісного рішення (для задач з кількома функціями мети) за допомогою теоретико-ігрового підходу. Матриця мір неоптимальності та рядок функції мети. Модуль опису класу.

    курсовая работа [588,8 K], добавлен 15.05.2011

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Програми і мови програмування. Алфавіт мови програмування. Лексеми, зарезервовані слова мови Pascal. Ідентифікатори, типи даних. Арифметичні вирази, операції. Стандартні функції, структура програми. Процедури введення-виведення. Правила написання команд.

    лекция [445,0 K], добавлен 24.07.2014

  • Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.

    курсовая работа [11,0 K], добавлен 08.08.2009

  • Коректне використання операторів та конструкцій, побудова ефективних алгоритмів для розв'язку типових задач. Розробка алгоритмів та програми для створення бази даних телефонних номерів. Використання засобів розробки програмного забезпечення мовою Java.

    курсовая работа [1,0 M], добавлен 25.01.2016

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

    курсовая работа [363,8 K], добавлен 03.12.2009

  • Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.

    курсовая работа [1,1 M], добавлен 14.09.2012

  • Використання ітерацій для обчислення приблизних значень величин. Розробка ітераційних алгоритмів з перевіркою правильності введення даних. Побудова блок-схеми і програмування мовою Turbo Pascal обчислення значення функції, розкладеної в степеневий ряд.

    лабораторная работа [197,2 K], добавлен 16.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.