Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 icon

Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4




Скачати 127.89 Kb.
НазваЛекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4
Дата конвертації26.01.2013
Розмір127.89 Kb.
ТипЛекція

Лекція №3

Тема: Програмування в Object Delphi: оператори циклу


План

1 Оператора for 1

2 Оператор while 2

3 Оператор repeat 4

4 Огляд компонентів панелі Standart, які підтримують функції множинного вибору 5

Література 7


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

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

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

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

У програмі цикл може бути реалізований за допомогою інструкцій for, while і repeat.

1 Оператора for


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


Оператор циклу з параметром має наступний вигляд:

FOR параметр циклам := поч. знач. ТО кін. знач. DO оператор;

або

FOR параметр циклу := поч. знач. DOWNTO кін. знач. DO оператор;


Тут FOR (для), ТО (до), DO (виконати) DOWNTO (вниз до), - службові слова;

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

поч. знач., кін. знач. - скалярні вирази того ж типа, що і параметр циклу;

оператор - будь-який оператор мови.

Крапку з комою після do не ставлять.

При використанні в циклі службового слова ТЕ значення параметра циклу збільшується, при DOWNTO - зменшується. Крок зміни параметра циклу залежить від його типа. Найчастіше використовується змінна цілого типа, що визначає крок, рівний 1 при ТЕ, і -1 - при DOWNTO.


Приклад:

for i:=l to 10 do begin

label1.caption:=label1.caption + '*'; end;

for i: =1 to n do s := s+i;

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

Розглянемо наступне завдання. Хай потрібно написати програму, яка обчислює значення функції у = 5х2 - 7 в крапках —1, -0.5, 0, 0.5 і 1 (таблиця повинна бути виведена в полі мітки форми застосування). Процедура, що забезпечує рішення поставленої задачі, може виглядати так:

procedure TForm1.ButtonlClick(Sender: TObject);

var

у: real; // значення функції

x: real; // аргумент функції

dx: real; // приріст аргументу

st: string; // зображення таблиці

i : integer; // лічильник циклів

begin

st:=''; x := -1; dx := 0.5;

for i:=l to 5 do begin

у := 5*x*x -7;

st := st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13); x :=x + dx; end;

Label1.Caption := st;

end;



Рисунок 1 Алгоритм оператора for


Алгоритм, відповідний оператора for, представлений на мал. 1 Звернете увагу, що якщо початкове значення лічильника більше кінцевого значення, то послідовність операторів між begin і end не буде виконана жодного разу.

Крім того, після кожного виконання інструкцій тіла циклу лічильник циклів збільшується автоматично.

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

tab1: = '' ;

for i:=l to 5 do

begin

tab1:=tabl+IntToStr(i)+' '+IntToStr(i*i)+chr(13);

end;

змінна tabl містить зображення таблиці квадратів чисел.


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

1 + + 1/3 + ... (значення i-го елементу ряду пов'язане з його номером формулою 1//). Діалогове вікно програми повинне містити, принаймні, два компоненти: поле мітки (Label1) і командну кнопку (Buttonl).

Обчислення суми ряду і виведення результату виконує процедура обробки події Onclick, текст якої приведений нижче. Після обчислення чергового елементу ряду процедура виводить в полі Labell номер елементу і його значення в поле мітки форми, призначене для виведення результату.

procedure TForm1.ButtonlClick(Sender: TObject);

var

i:integer; { номер елементу ряду }

elem:real; { значення елементу ряду }

summ:real; { сума елементів ряду )

begin

summ:=0;

label Leapt ion: = ' ' ;

for i:=l to 10 do begin

elem:=l/i;

label1.caption:=labell.caption+

IntToStr(i)+' '+FloatToStr(elem)+#13; sunrn: =summ+elem;

end;

label1.caption:=label1.caption+'Сумма ряду:'+FloatToStr(summ);

end;

2 Оператор while


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

Типовими прикладами використання циклу while є обчислення із заданою точністю, пошук в масиві або у файлі.

У загальному вигляді інструкція while записується таким чином:

while умова do begin

// тут інструкції, які треба виконати кілька разів

end

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

Оператор while виконується таким чином:

1. Спочатку обчислюється значення виразу умова.

2. Якщо значення виразу умова рівне False (умова не виконується), то на цьому виконання інструкції while завершується.

3. Якщо значення виразу умова рівне True (умова виконується), то виконуються розташовані між begin і end інструкції тіла циклу. Після цього знову перевіряється виконання умови. Якщо умова виконується, то інструкції циклу виконуються ще раз. І так до тих пір, поки умова не стане помилковою (False).

Для того, щоб інструкції циклу while, які знаходяться між begin і end, були виконані хоч би один раз, необхідно, щоб перед виконанням інструкції while значення виразу умова була істинна. Алгоритм, відповідний інструкції while, представлений на мал. 2.



Рисунок 2 Алгоритм оператора while


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

Розглянемо програму, яка обчислює значення числа ПІ з точністю, програми, що задається користувачем під час роботи. У основі алгоритму обчислення лежить той факт, що сума ряду 1 - 1/3 + 1/5 -1/7 + 1/9 + ... наближається до значення ПИ/4 при достатньо великій кількості членів ряду.

Кожен член ряду з номером n обчислюється за формулою: 1/(2*n - 1) і умножається на мінус один, якщо n парне (визначити, чи є ПІ парним, можна перевіркою залишку від ділення ПІ на 2). Обчислення закінчується тоді, коли значення чергового члена ряду стає меншим, ніж задана точність обчислення.

Вид діалогового вікна програми під час її роботи приведений на мал. 3. Користувач вводить точність обчислення в поле введення (Edit1). Після клацання на командній кнопці Обчислити (Buttonl) програма обчислює значення числа л і виводить результат в полі мітки (Label1).

Як і в попередніх прикладах, основну роботу виконує процедура обробки події OnClick.



Рисунок 3 Діалогове вікно програми Обчислення ПІ


Лістинг обчислення числа ПІ

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.

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, змінювали значення змінних, що входять у вираз умова.


Як приклад використання інструкції repeat розглянемо програму, яка перевіряє, чи є введене користувачем число простим (як відомо, число називається простим, якщо воно ділиться тільки на одиницю і саме на себе). Наприклад, число 21 — звичайне (ділиться на 3), а число 17 — простої (ділиться тільки на 1 і на 17).

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


Форма застосування Просте число зображена на мал. 5.



Рисунок 5 Форма застосування Просте число


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.

4 Огляд компонентів панелі Standart, які підтримують функції множинного вибору



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

Компонент TComboBox працює в п'яти різних режимах, визначуваних значенням властивості Style.

Перерахуємо можливі значення властивості Style компоненту TComboBox.


Таблиця 1 Значення для властивості Style

Значення

Механізм роботи списку




csDropDown

Створюється список, що розкривається, з можливістю редагування. Властивість MaxLength визначає максимально допустиме число символів, яке можна ввести в це поле (значення 0 указує на відсутність обмежень). Текст, введений користувачем, доступний за допомогою властивості Text

csDropDownList

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

csSimple

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

csOwnerDrawFixed

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

csOwnerDrawVariable

Створюється список, що розкривається, тільки для вибору значень з можливістю оформлення користувачем. Елементи можуть мати різну висоту


Текст, що вводиться, може автоматично перетворюватися до верхнього регістра (якщо властивість CharCase має значення ecUpperCase), до нижнього (ecLowerCase) або ніяк не перетворюватися (ecNormal за умовчанням).

Максимальне число елементів, що одночасно відображаються у видимій частині списку, задається у властивості DropDownCount. Щоб відкрити список з програми, властивості DroppedDown (Розкрити) треба привласнити значення True.

Поняття виділений рядок в списку, що розкривається, немає. У ньому є тільки поточний вибраний рядок (її номер в списку зберігається у властивості ItemIndex). Відповідно не можна і виділяти рядки списку. Єдиний метод, пов'язаний з виділенням даних, - це процедура SelectAll, яка виділяє весь текст, введений користувачем в приєднане поле. При роботі із списком, що розкривається, найбільш важливими є перераховані нижче події.

Перерахуємо основні події компоненту TComboBox.


Таблиця 2 Події компоненту TComboBox

Призначення

Умова генерації

OnChange

Користувач змінив текст в приєднаному полі

OnDropDown

Список розкривається. Цю подію необхідно обробляти, якщо вміст списку може мінятися під час роботи програми. Тоді в обробнику цієї події можна наново сформувати вміст списку (властивість Items).


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



  1. Що таке цикл? Наведіть приклади.

  2. Який процес називається циклічним?

  3. Що таке змінна циклу? Приклади.

  4. 4.3 яких складових утворюється алгоритм циклічної структури?

  5. Що таке тіло циклу? Його розміри в кількості інструкцій?

  6. Виконайте підготовку циклу для задачі y=f(z), zпоч =0.2, zк=1.4, Δz=0.3.

  7. Що таке модифікація циклу?

  8. Як управляти циклом? Як виконується перехід до початку циклу?

  9. Наведіть загальний вигляд циклічного алгоритму.

  10. Яким є цикл з лічильником?

  11. Що таке параметр циклу? Який існує закон його зміни?

  12. Розкажіть про циклічний алгоритм з параметром.

  13. Наведіть приклад циклічного обчислювального процесу.

  14. Що таке цикл з параметром в Object Pascal?

  15. Чим відрізняються інструкції for з to, downto та як вони ви­користовуються?

  16. Які правила організації циклу Вам відомі?

  17. Чи можна змінювати параметр циклу в його тілі? Якщо так, то яким чином?

  18. Чи можливий вхід у цикл за допомогою оператора goto? Як це зробити?

  19. Що відбудеться при використанні службового слова to в циклі, якщо початковий вираз буде більшим за кінцевий?

  20. Скільки операторів може стояти після службового слова do в циклі?

  21. Як зберегти останнє значення параметру циклу?

  22. Як організувати цикл, коли хпоч,, хкін, Δх - дійсні числа?

  23. Що таке змінні лічильника, що вони собою являють?

  24. Як обчислити факторіал будь-якого числа n? Наведіть схему обчислення.

  25. Що називається циклом з подальшою умовою?

  26. У чому полягає різниця між операторами while та repeat?

  27. Який вигляд має оператор з подальшою умовою?

  28. Наведіть блок-схему алгоритму роботи оператора repeat.

  29. Як виконується оператор repeat?

  30. Чому тіло циклу repeat...until виконується щонайменше один раз?

  31. Чи потрібні операторні дужки begin...end у циклі з подальшою умовою? Чому?

  32. Наведіть алгоритм визначення простих чисел за допомогою операторів repeat. ..until.

  33. Що таке компоненти форми програми «Прості числа»?

  34. Які значення набувають властивості компонентів форми «Прості числа»?

  35. Як утворити процедуру визначення простих чисел?

  36. З яких частин складається програма для визначення простих чисел?

  37. Для чого оператор Label3.Caption:=Label3.Caption+' - просте число має ліворуч та праворуч однакові записи Label3.Caption?

  38. Скільки разів має повторюватися циклічна частина програми з використанням операторів repeat та until?

  39. Який з операторів - while чи repeat - використовується ча­стіше? Чому?

  40. Наведіть приклади «вічних» циклів з використанням опе­раторів while та repeat.

  41. Поясніть призначення операторів (процедур) Break, Continue в тілі циклів.

  42. Розкажіть про команду припинення циклу.

  43. Як працює команда продовження циклу?

  44. Як розв'язуються задачі з невідомою кількістю циклічних повторень?

  45. Що таке умовний оператор циклу? Який загальний вигляд він має?

  46. Наведіть блок-схему алгоритму оператора while.

  47. Наведіть приклади використання оператора while.

Література


1. Архангельский А. Я. Разработка прикладных программ для Windows в Delphi 5 / А.Я. Архангельский. - М.: БИНОМ, 1999. - 256 с.

2. Бобровский С. И. Delphi 7: учеб. курс / С.И. Бобровский. - СПб.: Питер, 2004. - 736 с.

3. Фаронов В. Программирование баз данных в Delphi 6: Учебный курс / В. Фаронов. - СПб.: Питер, 2002. - 352 с:ил

4. Фаронов В. В. Delphi : программирование на языке высокого уровня : учебник для студ., обуч. по напр. подготовки дипломир. спец. "Информатика и вычис. техника" / В. В. Фаронов. - СПб.: Питер, 2005. - 640 с.

5. Фаронов В.В. Delphi 6. Учебный курс. –М. Нолидж, 2004. – 425 с.








Схожі:

Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconЛекція №2 Тема: Програмування на Object Delphi: програмування простих обчислювальних процесів План 1 Палітру компонентів Standart 1
Тема: Програмування на Object Delphi: програмування простих обчислювальних процесів
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconКурс лекцій Вступ. Відношення і схеми відношень. Формалізація відношень. Поняття ключів відношень
Реляційні оператори. Оператор проекції. Оператор з'єднання. Оператор вибору. Опера­­тор поділу. Булеві операції
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconЛекція №1 Тема: Програмування на object pascal в Delphi: введення План Історія розвитку Delphi 1 1 Об\'єктно-орієнтоване програмування 1
С. Яка з мов краще відповісти достатньо складно. Проте з упевненістю можна вважати, що Pascal краще за інші мови підходить для навчання...
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconЛекція №4 Тема: Програмування на Object Delphi: масиви План 1 Одновимірні масиви 1 1 Оголошення масиву 1 2 Виведення масиву 2 3 Введення масиву 3
Масив – це структура даних, доступ до елементів якої здійснюється по номеру індексу. Всі елементи масиву мають один тип
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconЛабораторна робота www. zol 2 inf. at. ua Тема: Програмування на Object Delphi: Файли
Мета: вивчення файлових типів даних, придбання практичних навиків створення і обробки файлів
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconУсловный оператор и оператор выбора
Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное...
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconТема: Вказівка розгалуження (умовний оператор) та її опис мовою програмування. Запис алгоритмів з використанням умовних операторів
Клас поділяється на дві групи (фірми) і з числа членів групи призначаються їх керівники
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconТема: Проект «Обмін валюти»
Завантажте систему візуального програмування Delphi за допомогою каскадного меню або клацніть на піктограмі Delphi
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconПрограма предмет: «Об’єктно орієнтоване програмування» Спеціальність: радіофізика I електроніка
Середовище об'єктно-орієнтованого програмування. Установка Delphi. Запуск Delphi
Лекція №3 Тема: Програмування в Object Delphi: оператори циклу План 1 Оператора for 1 2 Оператор while 2 3 Оператор repeat 4 iconЛабораторна робота №2
Мета роботи: ознайомитись з компонентами Delphi, їх властивостями, методами та подіями, розглянути особливості побудови прикладних...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи