- •Змістовий модуль 2 Практичне заняття № 1
- •Література
- •Короткі теоретичні відомості
- •1: Writeln(‘один’);
- •4: Writeln(‘чотири’);
- •Література
- •Короткі теоретичні відомості
- •Завдання для виконання
- •Домашнє завдання
- •Контрольні питання
- •Практичне заняття № 2
- •Завдання для виконання
- •Контрольні питання
- •Практичне заняття № 3
- •Література
- •Короткі теоретичні відомості Оператор while
- •3 Оператор repeat
- •Завдання для виконання
- •Контрольні питання
- •Практичне заняття № 4
- •Література
- •Короткі теоретичні відомості
- •Завдання для виконання
- •Змістовий модуль 3 Практичне заняття № 5
- •Література
- •Завдання для виконання
- •Опис плану розробки програми
- •Практичне заняття № 6
- •Література
- •Завдання для виконання
- •Практичне заняття № 7
- •Література
- •Завдання для виконання
- •Практичне заняття № 8
- •Література
- •Завдання для виконання
- •Створити програму, яка виводить поточний час та дату.
- •Практичне заняття № 9
- •Література
- •Завдання для виконання
- •Опис плану розробки програми
- •Практичне заняття № 10
- •Література
- •Завдання для виконання
- •Практичне заняття № 11
- •Література
- •Завдання для виконання
- •Практичне заняття № 12
- •Література
- •Завдання для виконання
- •Графіка
- •Переміщення малюнків
- •Практичне заняття № 13
- •Література
- •Завдання для виконання
3 Оператор repeat
Оператор repeat, як і оператор while, використовується в програмі в тому випадку, якщо необхідно виконати повторні обчислення (організувати цикл), але число повторень під час розробки програми невідомо і може бути визначено тільки під час роботи програми, тобто визначається ходом обчислень.
У загальному вигляді інструкція repeat записується таким чином:
repeat
// інструкції
unti1 умова
де умова - вираз логічного типа, що визначає умову завершення циклу.
Інструкція repeat виконується таким чином:
1. Спочатку виконуються тіла циклу, що знаходяться між repeat і until інструкції.
2. Потім обчислюється значення виразу умова. Якщо умова помилково (значення виразу умова рівне False), то інструкції тіла циклу виконуються ще раз.
3. Якщо умова істинно (значення виразу умова рівне True), то виконання циклу припиняється.
Таким чином, інструкції циклу, що знаходяться між repeat і unti1, виконуються до тих пір, поки умова помилково (значення виразу умова рівне False).
Алгоритм, відповідний інструкції repeat, представлений на мал. 4.
Рисунок 4 Алгоритм, відповідний інструкції repeat
Інструкції циклу, що знаходяться між repeat і until, виконуються як мінімум один раз. Для того, щоб цикл завершився, необхідно, щоб інструкції циклу, розташовані між repeat і until, змінювали значення змінних, що входять у вираз умова.
Завдання для виконання
Написати програму, яка обчислює значення числа ПІ з точністю, програми, що задається користувачем під час роботи.
У основі алгоритму обчислення лежить той факт, що сума ряду 1 - 1/3 + 1/5 -1/7 + 1/9 + ... наближається до значення ПИ/4 при достатньо великій кількості членів ряду.
Кожен член ряду з номером n обчислюється за формулою: 1/(2*n - 1) і умножається на мінус один, якщо n парне (визначити, чи є ПІ парним, можна перевіркою залишку від ділення ПІ на 2). Обчислення закінчується тоді, коли значення чергового члена ряду стає меншим, ніж задана точність обчислення.
Вид діалогового вікна програми під час її роботи приведений на Рис. 3. Користувач вводить точність обчислення в поле введення (Edit1). Після клацання на командній кнопці Обчислити (Buttonl) програма обчислює значення числа л і виводить результат в полі мітки (Label1).
Як і в попередніх прикладах, основну роботу виконує процедура обробки події OnClick.
Рисунок 5 Діалогове вікно програми Обчислення ПІ
Лістинг обчислення числа ПІ
unit pi_; interface
uses
Windows, Messages, SysUtils, Classes, Graphics
Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit; // точність обчислення
Button1: TButton; // кнопка Обчислити
Label1: TLabel;
Label2: TLabel; // поле виведення результату
procedure ButtonlClick(Sender: TObject); private
{ Private declarations }
public
{ Public declarations )
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
pi:real; // обчислюване значення ПІ
t:real; // точність обчислення
n:integer; // номер члена ряду
elem:real; // значення члена ряду
begin
pi := 0;
n := 1;
t := StrToFloat(editl.text);
elem := 1; // щоб почати цикл
while elem >= t do
begin
elem := 1 / (2*n - 1) ; if n MOD 2=0
then pi := pi — elem else pi := pi + elem; n := n + 1;
end;
pi: = pi * 4; labell.caption:= 'ПІ рівне '+ FloatToStr(pi)+ #13
+ 'Підсумовано '+IntTostr(n)+' членів ряду.'; end;
end.
Написати програму, яка перевіряє, чи є введене користувачем число простим (як відомо, число називається простим, якщо воно ділиться тільки на одиницю і саме на себе).
Наприклад, число 21 — звичайне (ділиться на 3), а число 17 — простої (ділиться тільки на 1 і на 17).
Перевірити, чи є число n простим, можна діленням числа n на два, на три і т.д. до n і перевірки залишку після кожного ділення. Якщо після чергового ділення залишок рівний нулю, то це означає, що знайдено число, на якому n ділиться без залишку. Порівнявши n і число, на якому n розділилося без залишку, можна визначити, чи є n простим числом.
Рисунок 6 Форма застосування Просте число
Лістинг програми
unit simple_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton; // кнопка Перевірити
Label1: TLabel;
Edit1: TEdit; // поле введення числа
Label2: TLabe1; // поле виведення результату
procedure ButtonlClickfSender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ButtonlClick(Sender: TObject) ;
var
n: integer; // число d, що перевіряється: integer; // дільник
r: integer; // залишок від ділення n на d
begin
n:=StrToInt(Editl.text);
d := 2; // спочатку ділитимемо на два
repeat
r := n mod d;
if r <> 0 // n не розділилося без остачі на d
then d := d + 1;
until r = 0; // знайдене число, на якому п розділилося без залишку
label2.caption:=Edit1.text;
if d = n
then Iabel2.caption:=label2.caption + ' — просте число.'
else label2.caption:=label2.caption + ' — звичайне число.';
end;
end.
