КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Вопрос №6 Цикл for
Еще один мощный инструмент в Delphi – циклы. Эти циклы выполняют оператор или блок операторов заданное количество раз. Синтаксис цикла for следующий: for счетчик:= нач_значение to кон_значение do оператор;В расширенном варианте синтаксис такой: for счетчик:= нач_значение to кон_значение do begin оператор 1; оператор 2; … оператор n;end;Здесь: · счетчик – переменная любого целого типа; · нач_значение – начальное значение счетчика; · кон_значение – конечное значение счетчика. В качестве счетчиков используют обычно целые переменные. Чтобы не тратить попусту оперативную память, счетчикам назначают тип Byte или Word, в зависимости от того, какое значение может оказаться у конечного значения. В самом начале счетчик будет равен начальному значению. Когда выполнятся все указанные операторы блока, управление вновь вернется к началу цикла. Счетчик увеличится на единицу, и цикл будет выполнен снова. И так далее, до тех пор, пока счетчик не станет равным конечному значению. Давайте изучим цикл for на примере. Пусть нам нужно перевести температуру от 0 до 100 градусов из шкалы Цельсия в шкалу Фаренгейта. Правила здесь просты: нужно взять температуру по Цельсию, умножить ее на 9/5 и к результату прибавить 32. Сам результат нужно будет программно добавить в компонент Memo в виде строки: "x градусов по Цельсию = y градусов по Фаренгейту" Создайте новое приложение. Сразу же свойству Name формы присвойте имя fName. В свойстве Caption напишите "Перевод температур из Цельсия в Фаренгейты". Сохраните проект в новую папку. В верхнюю часть окна поместите компонент Memo и в свойстве Lines удалите из него весь текст. Растяните Memo по форме, как на рисунке 1:
Ниже Memo добавьте кнопку Button, в свойстве Caption которой укажите "Расчет температур". Теперь создадим обработчик нажатия на кнопку, дважды щелкнув по ней. Процедура выглядит так: procedure TfName.Button1Click(Sender: TObject);var i: Byte; //счетчикbegin for i:= 0 to 100 do //делаем от 0 до 100 Memo1.Lines.Add(IntToStr(i) + ' градусов Цельсия = ' + FloatToStr(CelToFar(i)) + ' Фаренгейта');end;Здесь следует обратить внимание на последний оператор. Оператор Memo1.Lines.Add('Строка');добавляет строку 'Строка' в компонент Memo. При этом, в качестве строки, мы использовали сложное выражение, формирующее строку из разных частей. Разберем каждую часть подробно. в качестве результата вернет значение i (счетчика) в виде строки. Как уже говорилось, это значение за каждый проход цикла будет увеличиваться на единицу. То есть, в первом проходе i будет равна 0, во втором 1, и так далее, пока не станет равна 100. Выполнив оператор в последний раз, цикл прекратит свою работу. А мы каждый раз будем получать это число в виде строки. Далее у нас идет строка ' градусов Цельсия = 'С помощью знака "+" (знак конкатенации) мы добавляем одну строку к другой. В результате, при первом проходе мы получим строку '0 градусов Цельсия = 'Обратите внимание, что во второй строке в начале и в конце есть пробелы. Без пробела строки сольются: "0градусов Цельсия =", а это некрасиво. Далее мы имеем строку FloatToStr(CelToFar(i))Функция FloatToStr() возвращает вещественное число в виде строки. В качестве вещественного числа мы использовали вызов функции CelToFar(i), передав ей в качестве параметра целое число – текущее значение счетчика. Функция использует это число, как градус Цельсия, преобразует его в Фаренгейт и вернет значение в виде вещественного числа. Этой функции пока еще не существует, мы напишем ее позже. В результате мы получим строку "0 градусов Цельсия = 32". Далее мы добавляем еще строку в результате чего получаем готовую строку "0 градусов Цельсия = 32 Фаренгейта". И уже готовую строку с помощью метода Add() мы добавляем в компонент Memo. Еще одно правило, которое можно увидеть из этого примера – если оператор получается длинным, его можно перенести на следующую строку после арифметического знака или запятой. Функцию CelToFar() нужно будет создать выше нашей процедуры: function CelToFar(a: Byte): Real;begin Result:= a * 9/5 + 32;end;Функция принимает параметр в виде целого числа, переводит его в Фаренгейты и возвращает в качестве результата, как вещественное число. Наша программа готова. Сохраните ее, скомпилируйте и посмотрите, как она работает. Если у вас не умещается весь полученный текст в Memo, добавьте в компонент вертикальную полосу прокрутки.
Дата добавления: 2014-01-04; Просмотров: 236; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |