-
Основы Delphi
- Основы программирования на Delphi
- Компоненты Delphi. Начинаем писать свои первые приложения на Delphi
- Основные принципы программирования в Delphi. Начинаем программировать самостоятельно
- Delphi и Microsoft Word
- Delphi и Microsoft Excel
- Delphi и Microsoft Access
- Delphi и OpenOffice Writer
- Delphi и OpenOffice Calc
- Создание игр на Delphi
- Игра Пристрели птичку
Delphi и MSOffice
Delphi и OpenOffice
Delphi и Интернет
Delphi и игры
Delphi Android
Школа программирования Delphi
Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал.
Каждый кто решил написать свою программу, создать свое приложение, научиться программировать и т.д., найдет на DelphiSchool статьи Delphi, уроки Delphi, видеоуроки Delphi, исходники Delphi, файлы Delphi, изучит компоненты Delphi, посмотрит Delphi примеры и многое другое абсолютно бесплатно. Все о Delphi программировании теперь собрано на одном сайте!!!
Главная » Уроки Delphi » Основы Delphi » Основные принципы программирования в Delphi. Начинаем программировать самостоятельно |
Работой цикла можно еще и управлять. В Delphi есть два оператора управления - break и continue. В этом уроке мы научимся работать с этими операторами и на примере рассмотрим, как в Делфи можно написать программу, используя операторы break и continue для управления циклами. Для началы мы начнем рассмотрение и изучение управления циклами в Делфи с оператора continue. Допустим, нам нужно разделить число 10 на числа начиная от -3 до 3 и вывести результат в TListBox. Для решения этой проблемы напрашивается цикл, который будет выполняться от -3 до +3. Ниже можно увидеть примерный код такого цикла, в котором мы попытаемся реализовать заданное условие: Код procedure TForm1.Button1Click(Sender: TObject); var i, r:Integer; begin for i:=-3 to 3 do begin r:=round(10/i); ListBox1.Items.Add('10/'+IntToStr(i)+'='+IntToStr(r)); end; end; В этом примере запускается цикл, в котором переменная i будет изменяться от -3 до 3. На каждом шаге делится 10 на значение i и сохраняется результат в переменной r. При делении используется функция round, которая округляет переданное ей значение. В качестве исходного значения мы передаем ей результат деления 10 на переменную i, т.е. round(10/i). Таким образом, в переменную г будет записан округленный до целого результат деления. Следующим действием является добавление результата в ListBoxl, с одновременным преобразованием переменной г в строку. Давайте посмотрим, что произойдет, когда переменная i будет равна 0. В этом случае число 10 будет делиться на 0, а значит, произойдет ошибка, потому что на 0 делить нельзя. Как же тогда выйти из этой ситуации? Можно на каждом этапе цикла проверять значение i, и если оно равно 0, то не выполнять никаких действий. Два возможных решения приведены в коде ниже: Код procedure TForm1.Button1Click(Sender: TObject); var i, r:Integer; begin for i:=-3 to 3 do begin // начало для оператора for if i<>0 then begin // начало для оператора if r:=round(10/i); ListBox1.Items.Add('10/'+IntToStr(i)+'='+IntToStr(r)); end; //Этот end для оператора if end; //Этот end для оператора for end; В этом примере на каждом этапе проверяется значение i, и если оно не равно 0, то только в этом случае производятся вычисления. Это очень простое решение для маленьких и простых программ. Но если ваш цикл большой и выполняет много действий, то такое решение будет как минимум неудобно и может потеряться "читабельность" кода. В худшем случае, вообще может ничего не получиться. Вот тут на помощь приходит оператор continue. Код procedure TForm1.Button1Click(Sender: TObject); var i, r:Integer; begin for i:=-3 to 3 do begin // начало для оператора for if i=0 then begin // начало для оператора if ListBox1.Items.Add('На ноль делить нельзя'); Continue; end; //Этот end для оператора if r:=round(10/i); ListBox1.Items.Add('10/'+IntToStr(i)+'='+IntToStr(r)); end; //Этот end для оператора for end; В этом примере мы также проверяем на каждом этапе значение переменной i. Если оно равно нулю, то выводится сообщение в ListBoxl о том, что на ноль делить нельзя, и выполняется оператор continue. Как только программа встречает такой оператор, она сразу прерывает дальнейшее выполнение цикла и переходит на следующий шаг. Это то же самое, что выполнить команду "Остановить дальнейшее выполнение программы, увеличить значение переменной i и начать выполнение цикла со следующим значением". Как только программа встречает оператор continue, она перескакивает на конец цикла, где увеличивается значение счетчика (в данном случае переменная i) и продолжается выполнение уже со следующего шага. На рисунке ниже показана форма с результатом работы нашего примера. Рисунок. Пример управления циклом с помощью оператора Continue Использование continue вместе с циклом for достаточно удобно и безопасно, в отличие от циклов while или repeat … until. Посмотрим на следующий пример: Код i:=-3 while i<3 do begin if i=0 then continue; r:=round(10/i); ListBoxl.Items.Add('10/'+IntToStr(i)+'='+IntToStr(r)); i:=i+l; end; В этом примере также 10 делится на числа от -3 до 3, но на этот раз задача решается с помощью цикла while. Чтобы не встретить ошибку деления на 0, в цикле проверяется переменная i на равенство нулю, и если это так, то выполняется оператор continue. А теперь подумайте, что произойдет, когда i действительно будет равна нулю. В начале цикла произойдет проверка, которая даст истину, и выполнится оператор continue. Шаг цикла прервется и начнется с самого начала, при этом переменная i не изменится, и она снова будет равна 0. Вот оно классическое зацикливание, которое приведет к зависанию программы. Когда выполняете оператор continue в цикле while, убедитесь что счетчик изменяется. В данном случае нужно было сделать следующую проверку: Код if i=0 then begin i:=i+l; continue; end; В этом случае перед прерыванием шага цикла значение переменной i увеличивается на единицу, а значит, на следующем шаге она уже не будет равна нулю. Теперь давайте разберемся с оператором break. Как только программа встречает такой оператор, цикл прерывается и выполнение передается следующему оператору после оператора цикла. Давайте возьмем наш предыдущий пример и заменим в нем continue на break Код procedure TForm1.Button1Click(Sender: TObject); var i, r:Integer; begin for i:=-3 to 3 do begin // начало для оператора for if i=0 then begin // начало для оператора if ListBox1.Items.Add('На ноль делить нельзя'); break; end; //Этот end для оператора if r:=round(10/i); ListBox1.Items.Add('10/'+IntToStr(i)+'='+IntToStr(r)); end; //Этот end для оператора for ListBox1.Items.Add('Расчет окончен'); end; В этом случае если значение i будет равно нулю, то выводится сообщение о том, что на ноль делить нельзя и цикл прерывается. После этого управление передается следующему оператору после цикла. На рисунке ниже показан результат работы программы. Рисунок. Пример управления циклом с помощью оператора Break Как видно из примера, после встречи с нулем в цикле больше ничего не выполняется и оператор break просто завершает его работу. К уроку (статье) Управление циклами в Delphi. Операторы Continue и Break. прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Управление циклами в Delphi. Операторы Continue и Break. | |
Добавить Управление циклами в Delphi. Операторы Continue и Break. в закладки: |
Диалоговые окна в Delphi. ShowMessage, MessageDlg, MessageDlgPos, InputBox и InputQuery |
Delphi и RadioGroup. Пример работы с группой компонентов RadioButton в Делфи |
Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi |
Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки |
Delphi и ComboBox. Пример работы с ниспадающими списками в Делфи |
Delphi и TEdit. Пример работы со строками ввода в Делфи |
Константы в Delphi. Объявление констант в Делфи |
Управление циклами в Delphi. Операторы Continue и Break. |
Delphi и CheckBox. Пример работы с CheckBox в Делфи |
Delphi и TPanel. Пример работы с панелями в Делфи |
Всего комментариев: 12 | 1 2 » | |||||||||
|