русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Цикл repeat – until.


Дата додавання: 2014-11-28; переглядів: 769.


На відміну від циклу for – to – do, у циклі repeat – until не вказується кількість ітерацій та початкова умова циклу. У цьому циклі є тільки кінцева умова, по виконанню якої цикл завершує свою роботу.

Загальна структура циклу repeat – until має вигляд

 

repeat

оператор;

оператор;

...

оператор;

until умова_виходу;

 

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

 

Приклад читання тексту з файлу з використанням repeat - until.

Прочитати з текстового файлу a.txt, що розташований на диску c:\, рядки тексту і вивести їх на екран у ListBox.

 

Для програми потрібно буде розташувати на формі об'єкти Button1, OpenDialog1, ListBox1. Також знадобляться змінні: 2 рядкових, 1 текстова.

Форма матиме вигляд, наприклад

 

 

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

 

procedure TForm1.Button1Click(Sender: TObject);

begin

 

end;

 

Опишемо змінні:

 

procedure TForm1.Button1Click(Sender: TObject);

var

s, s1:string;

f:textfile;

begin

 

end;

 

Далі, для того, щоб встановити ім'я файлу, треба отримати його з OpenDialog1 таким чином:

procedure TForm1.Button1Click(Sender: TObject);

var

s, s1:string;

f:textfile;

begin

if OpenDialog1.Execute then s1:=OpenDialog1.FileName;

end;

 

Наступним кроком є підготовка файлу до читання.

procedure TForm1.Button1Click(Sender: TObject);

var

s, s1:string;

f:textfile;

begin

if OpenDialog1.Execute then s1:=OpenDialog1.FileName;

assignfile(f,s1);

reset(f);

end;

Тепер потрібно зчитувати з файлу по рядкам інформацію (наприклад у змінну s) і додавати ці рядки до ListBox1, причому робити це поки не досягнемо кінця файлу. Для цього нам доведеться організувати цикл (наприклад repeat - until). Текст процедури матиме вигляд:

 

procedure TForm1.Button1Click(Sender: TObject);

var

s,s1:string;

f:textfile;

begin

if OpenDialog1.Execute then s1:=OpenDialog1.FileName;

assignfile(f,s1);

reset(f);

repeat

readln(f,s);

ListBox1.Items.Append(s);

until eof(f);

 

end;

Але тепер, якщо при роботі програми двічі натиснути клавішу Button1 і вибрати файл, то зміст ListBox1 буде складатись з двох файлів, що були відкриті. Щоб запобігти цьому нам потрібно додати оператор очистки вікна ListBox1 - ListBox1.Items.Clear;. Тоді текст процедури матиме вигляд:

procedure TForm1.Button1Click(Sender: TObject);

var

s,s1:string;

f:textfile;

begin

if OpenDialog1.Execute then s1:=OpenDialog1.FileName;

assignfile(f,s1);

reset(f);

ListBox1.Items.Clear;

repeat

readln(f,s);

ListBox1.Items.Append(s);

until eof(f);

 

end;

І нарешті, після роботи з файлом, його потрібно закрити. Це робиться за допомогою оператора closefile.

Тоді повний текст модуля матиме вигляд:

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Button1: TButton;

OpenDialog1: TOpenDialog;

ListBox1: TListBox;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

var

s,s1:string;

f:textfile;

begin

if OpenDialog1.Execute then s1:=OpenDialog1.FileName;

assignfile(f,s1);

reset(f);

ListBox1.Items.Clear;

repeat

readln(f,s);

ListBox1.Items.Append(s);

until eof(f);

closefile(f);

end;

end.

 


<== попередня лекція | наступна лекція ==>
Алгоритм бульбашкового сортування. | Порівняння циклів.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн