Компьютерная помощь

СКОРАЯ ПОМОЩЬ для ВАШЕГО КОМПЬЮТЕРА

Компьютерная помощь
        

ГЛАВНАЯ | ССЫЛКИ | КОНТАКТЫ | РАССЫЛКА


СКОРАЯ
 
КОМПЬЮТЕРНАЯ ПОМОЩЬ

 
Телефон мобильный
 
Телефон рабочий
(пон. - вс. с 9 до 20 ч., спросить Игоря)


  Ремонт компьютеров

  Компьютерная помощь

  Диагностика неисправностей ПК

  Модернизация компьютеров и ноутбуков

  Восстановление данных

  Установка и настройка программ

  Проектирование и прокладка сетей

  Абонентское обслуживание

  Лечение вирусов

  Визитки, рекламные листовки

  Разработка ПО (программного обеспечения)

Программирование в среде Delphi 7

    Программирование в среде Delphi 7. Циклы в Object Pascal

  Продолжим тему создания простых приложений на Delphi 7 в рамках написания программы "Записная книга". Только в отличии от предыдущего урока, постараемся использовать уже более серьёзный подход в написании программ, будем использовать базы данных для хранения информации.

  По простому, база данных - это файл или несколько файлов, объединённых по какому-либо признаку, в котором (в которых) хранится некоторая информация в структурированном виде. Более подробно этот вопрос будем рассматривать далее, а пока что рассмотрим понятие цикла. Цикл в программировании - это набор операций, которые повторяются некоторое количество раз. Начнём с цикла for.

  Открываем среду разработки Delphi 7 и устанавливаем кнопку на форму. Но перед этим сделаем всё по правилам! Проект сохраним в новой рабочей папке, свойство Caption формы изменим в инспекторе объектов на "Примеры циклов". Название формы - значение свойства Name изменим с Form1 на FCicle. Сохраним файлы проекта.

  Первая кнопка понадобится нам для демонстрации работы цикла for.

Cреда программирования Delphi 7

  Кликаем один раз по кнопке в редакторе форм, тогда в "Инспекторе объектов" отобразятся свойства кнопки. Вообще, когда кликаем по компоненту на форме, в окне "Object Inspector" отображаются свойства выбранного компонента. Я, в качестве примера, изменяю свойство Font у кнопки, выделяя шрифт жирным и увеличивая его размер. Потом справа от кнопки поставим компонент TEdit и, примыкающий к строке редактирования, компонент TUpDown, находящийся на вкладке Win32 палитры компонентов.

Компонент TUpDown на вкладке Win32 палитры компонентов

  Для экземпляра UpDown1 в свойстве Associate выбираем Edit1. Теперь, регулируя стрелками, мы можем изменять значение в строке редактирования. Укажем, что это значение параметра цикла, поставив метку с соответствующей надписью над Edit1.

Заготовка формы для цикла for

  Делаем двойной щелчок мыши по кнопке Button1, и перед нами в окне кода появляется шаблон процедуры обработчика события нажатия на кнопку Button1Click. Начнём писать наш цикл. Пусть перед нами стоит задача посчитать сумму натурального ряда чисел от 1 до значения которое мы укажем в строке Edit1. Ниже представлен код.



procedure TFCicle.Button1Click(Sender: TObject);
Var
  i, S: Integer;
begin
  S := 0;
  for i := 1 to StrToInt(Edit1.Text) do
    S := S + i;

  ShowMessage(IntToStr(S));
end;

  Сперва определяем две локальные переменные (эти переменные используются только внутри события нажатия на кнопку). Переменная i - это счётчик цикла. Переменная S - результирующая сумма, изначально, после объявления, имеет значение равное нулю. Всё-таки лучше иметь привычку сумму всегда обнулять. Затем в цикле, счётчик принимает последовательно значения 1, 2, 3 и т. д. до StrToInt(Edit1.Text). Здесь мы преобразовываем строковое значение, которое ввели в строке редактирования, в целочисленное значение, посредством функции StrToInt. Если целочисленному (integer) значению попытаться присвоить строковое значение, то возникнет ошибка компиляции, программа не запустится! Так вот, каждый раз в цикле присваивая последовательно значения счётчика i значению суммы S, мы получаем в итоге требуемый результат. Если в строку Edit1 поставить 1, то цикл выполнится 1 раз. А если поставить значение меньшее начальному значению счётчика, в данном случае это 1, то цикл вообще не выполнится. Ошибки не возникнет. Окончательно выводим результат с помощью процедуры ShowMessage. В качестве параметра в неё нужно передать строку, поэтому целочисленное значение переменной S преобразовываем в строку функцией IntToStr.

  У компонента TUpDown есть свойства Min и Max, определяющие минимальное и максимальное значение. По умолчанию это 0 и 100, можно изменить на своё усмотрение.

  Если мы введём в строку редактирования не число, а какой-либо символ, то будет выдана ошибка после нажатия на кнопку. Потому что в качестве параметра для функции StrToInt необходимо передавать целое значение. Чтобы оградить пользователя от этой ошибки, нужно просто не дать ему возможности вводить символы в эту строку с клавиатуры. Кликаем по строке Edit1, жмём F11, выбираем вкладку Events "Инспектора объектов", два раза кликаем на событии OnKeyPress. Это событие, когда нажата клавиша на клавиатуре. В этом событии у нас есть возможность обработать вводимый символ, изменить его значение. Пишем следующий код.

 

procedure TFCicle.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (Key in ['0'..'9', #8]) then
     Key := #0;
end;

  Переменная Key - это вводимый символ, его мы можем менять в зависимости от ситуации в нашем рассматриваемом событии. Нам нужно не пропускать все символы кроме цифр и клавишу стирания символа, которая имеет код #8. Здесь стоит поговорить о символьном типе данных Char. Именно такой тип имеет переменная Key. Символ в Delphi пишется в апострофах, например, 'z'. Так же символ можно указать в виде его кода после значка решётки #. Символ 'z' можно указать так же в виде кода #122. Так вот, если Key не попадает в множество символов, состоящих из цифр и клавиши стирания, то мы присваиваем ей значение символа #0, это будет означать, что ничего не введено, ввод символа блокируется. Множества в Object Pascal указываются в квадратных скобках, например, множество латинских символов в нижнем регистре: ['a'..'z'], или через запятую несколько символов ['a', 'b', 'f', 'z']. Условие вхождения в множество обеспечивается такой конструкцией: if переменная in [множество] then. В нашем случае мы указали not - отрицание условия.

  Стоит понимать, что существуют ещё и вложенные циклы, которыми часто приходится пользоваться. И ещё, в рамках одного цикла может быть не одно действие, а несколько. В этом случае эти действия необходимо заключить между ключевыми словами begin и end.

  К примеру вот так:
  for i := 1 to n do
    begin
      Процедура1(i, набор параметров);
      for j := 1 to m do
        begin
          Процедура2(i, j, набор параметров);
          Процедура3(i, j, набор параметров);
        end;
    end;

  Перейдём к изучению других циклов. Цикл с пост-условием: repeat ... until (условие). И цикл с пред-условием: while (условие) do ...

Цикл с пост-условием

  Добавляем на форму ещё одну кнопку или копируем предыдущую при помощи сочетания клавиш Ctrl + C и Ctrl + V. В случае копирования все свойства для новой кнопки сохраняются, в частности останется тот же шрифт (свойство Font). Два раза кликаем на эту кнопку Button2 и вставляем в шаблон для события нажатия на кнопку наш код с циклом Repeat.


procedure TFCicle.Button2Click(Sender: TObject);
Var
  i, S: Integer;
begin
  S := 0;
  i := 0;
  Repeat
     Inc(i); //i := i + 1;
     S := S + i;
  Until i = StrToInt(Edit1.Text);

  ShowMessage(IntToStr(S));
end;

  Как работает этот цикл. Счётчик цикла мы вводим самостоятельно. Сумму и счётчик предварительно обнуляем. Далее увеличиваем счётчик i на 1 процедурой Inc(i), которая работает так же как и в случае такого присвоения: i := i + 1, но делается это немного быстрее. При малых значениях витков цикла это быстродействие "незаметно для глаза". Потом прибавляем к нашей сумме S новое значение счётчика i на каждом витке цикла, пока не будет выполнено условие, стоящее после ключевого слова Until, то есть пока значение i не станет равным значению, введённому в строку редактирования.

  Для этого случая стоит отметить, что если оставить нулевое значение в строке параметра цикла, то на первом шаге цикла наш счётчик уже станет равным 1 и условие i = StrToInt(Edit1.Text); не будет выполнено никогда, программа зависнет! Поэтому поставим перед циклом условие. Пусть наш цикл будет выполняться только если значение параметра цикла больше нуля.


procedure TFCicle.Button2Click(Sender: TObject);
Var
  i, S: Integer;
begin
  S := 0;
  i := 0;
  if StrToInt(Edit1.Text) > i then
    Repeat
       Inc(i); //i := i + 1;
       S := S + i;
    Until i = StrToInt(Edit1.Text);

  ShowMessage(IntToStr(S));
end;

Цикл с пред-условием

  Разместим ещё кнопку на форме.

Окончательный вариант формы

 Два раза кликаем на кнопку Button3 и вставляем код с циклом while в обработчик события.


procedure TFCicle.Button3Click(Sender: TObject);
Var
  i, S: Integer;
begin
  S := 0;
  i := 0;
  while i < StrToInt(Edit1.Text) do
    begin
       Inc(i); //i := i + 1;
       S := S + i;
    end;

  ShowMessage(IntToStr(S));
end;

  Цикл выполняется, пока выполняется условие i < StrToInt(Edit1.Text), и это условие проверяется в самом начале цикла! Тело цикла (набор действий внутри цикла) располагается между ключевыми словами begin и end.

  Архив с файлами проекта можно скачать здесь f_d7_4.rar



  Вернуться к списку статей, посвящённых программированию в Delphi 7


  Вы так же можете подписаться на бесплатную рассылку о новых статьях на сайте.

Скорая помощь для вашего компьютера
Подписаться письмом

  

 Если Вам понравилась статья, или вы хотели бы освещения другой, интересующей Вас темы, то напишите нам. Это очень важно!



 Наверх

 Перейти к списку статей по программированию в среде Delphi 7

Свяжитесь с нами!

E-mail Тел: Телефон.        

E-mail E-mail: yerkhov@yandex.ru.


ПОЛЕЗНАЯ ИНФОРМАЦИЯ Полезная информация

  Профилактика компьютера

  Безопасность Вашего компьютера

  Если компьютер заблокирован

  Создание загрузочной флешки

  Настройка домашнего маршрутизатора

  Оптимизация операционной системы. CCleaner

  Защита операционной системы. The Cleaner 2012

  Обслуживание реестра Windows, чистка дисков. Reg Organizer

  Программирование в среде Delphi 7

  Windows XP. Оптимизация за счёт остановки ненужных служб

  Восстановление данных. Программа «Ontrack EasyRecovery Professional»

Яндекс.Метрика



© 2010 «Компьютерная помощь»
ИП ЕРХОВ ИГОРЬ СЕРГЕЕВИЧ      
ИНН 773720249223
ОГРН 308770000276132

Hosted by uCoz