ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Программирование простых циклических алгоритмов в системе DelphiВ данном разделе осуществляется изучение операторов цикла языка Delphi, приобретение навыков программирования простых циклических алгоритмов, ввода, компиляции и отладки программ. На языке Delphi существуют три оператора цикла: 1. Цикл с предусловием (while). 2. Цикл с постусловием (repeat). 3. Цикл со счетчиком (for). Оператор цикла while Рассмотрим схему алгоритма оператора while (рис. 4.1).
Рис. 4.1. Схема алгоритма оператора while Условие представляет собой булевское выражение, тело цикла – один простой или составной оператор. Если тело цикла состоит из нескольких операторов, то эти операторы нужно заключать в операторные скобки. Если результат вычисления условия равен true (правда), то тело цикла выполняется и снова осуществляется переход к проверке условия. Если результат вычисления условия равен false (ложь), то происходит выход из цикла и переход к оператору, следующему за циклическим оператором while. Если перед первым выполнением цикла значение выражения было false, тело цикла вообще не выполняется и происходит переход к следующему оператору. Пример Вычислить сумму нечетных чисел в интервале 0 – 10. var K, S: integer; begin S:=0; K:=1; while K<11 do begin S:=S+K; K:=K+2; end; end; Оператор цикла repeat Рассмотрим схему алгоритма оператора repeat (рис. 4.2).
Рис. 4.2.Схема алгоритма оператора repeat Условие представляет собой булевское выражение, тело цикла – один или несколько операторов. Тело цикла оператора repeat выполняется, пока условие равно false. Если тело цикла состоит из нескольких операторов, то эти операторы можно не заключать в операторные скобки. Тело цикла оператора repeat выполняется, по крайней мере, один раз, так как проверка условия выполняется после тела цикла. Поэтому данный оператор цикла используется реже по сравнению с другими операторами цикла. Пример Вычислить сумму чисел от 1 до 100. var d, s: integer; begin d:=1; s:=0; repeat s:=s+d; d:=d+1; until d>100; end; Оператор цикла for Рассмотрим схему алгоритма оператора for (рис. 4.3).
Рис. 4.3. Схема алгоритма оператора for В операторе цикла for можно использовать только два значения шага счетчика цикла: либо +1, либо –1. В теле цикла оператора for не допускаются изменения счетчика цикла. for <счетчик цикла>:= s1 to s2 do <тело цикла>; Счетчик цикла увеличивается на 1 при каждом выполнении тела цикла. for <счетчик цикла>:= s1 downto s2 do <тело цикла>; Счетчик цикла уменьшается на 1 при каждом выполнении тела цикла. s1 и s2 – выражения, определяющие соответственно начальное и конечное значения счетчика цикла. Тело цикла – один простой или составной оператор. Счетчик цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. Счетчик цикла может быть только порядкового типа. Не допускается вещественный тип. Тело цикла не выполнится ни разу, если для оператора for… tо начальноезначение счетчика s1больше конечного значения s2, а для оператора for… downto начальноезначение счетчика s1меньше конечного значения s2. Приведённые ниже примеры операторов циклов демонстрируют значения, принимаемые счетчиками циклов в процессе выполнения программы. Операторы: Значения: for k:= 10 to 14 do 10 11 12 13 14 for k:= 14 downto 11 do 14 13 12 11 for c:= ’a’ to ‘e’ do a b c d e for c:= ’e’ downto ‘a’ do e d c b a Выполнение оператора цикла любого вида может быть прервано с помощью процедуры Break, котораяпередаетуправлениенаоператор, следующий за оператором цикла. С помощью процедуры Continue можно задать досрочное завершение очередного повторения тела цикла, что равносильно передаче управления в конец тела цикла. Пример программирования циклического алгоритма Задание. Вычислить сумму целых чисел, значения которых лежат в диапазоне от x1 до x2. 1. Разработка алгоритма (рис. 4.4): а) входные данные: х1, x2 – целочисленные переменные; б) выходные данные: s – целочисленная переменная.
Рис. 4.4. Схема алгоритма вычисления суммы чисел 2. Разработка формы (рис. 4.5).
Рис. 4.5. Внешний вид формы Чтобы сконструировать форму, изменим свойства каждой компоненты соответствующим образом (табл. 4.1). Таблица 4.1 Используемые компоненты
3. Текст программы: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Label5: TLabel; Label6: TLabel; procedure Label4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { обработчик события OnClick } procedure TForm1.Label4Click(Sender: TObject); var x1,x2,s:integer; begin { преобразуем текст из Edit1 в целое число } x1:=StrToInt(Edit1.Text); { преобразуем текст из Edit2 в целое число } x2:= StrToInt(Edit2.text); { обнуление суммы } s:=0; { организация цикла } while x1<=x2 do { тело цикла } begin { прибавление к сумме текущего значения х1} s:=s+x1; { увеличение значения х1 на 1} x1:=x1+1; end; { конец тела цикла } { преобразуем число s в строку и покажем результат в метке } Label5.Caption:=IntToStr(s); end; end. Контрольные вопросы к главе 4 1. Как функционирует оператор цикла for и какая типовая схема алгоритма ему соответствует? 2. Как функционирует оператор цикла while и какая типовая схема алгоритма ему соответствует? 3. Как функционирует оператор цикла repeat и какая типовая схема алгоритма ему соответствует? 4. Определить значение переменной s после выполнения операторов: s:=0; i:=1; while i>5 do i:=i+1; s:=s+1/i; 5. Определить значение переменной s после выполнения операторов: s:=0; i:=1; repeat s:=s+1/i; i:=i+1; until i>1; 6. Определить значение переменной s после выполнения операторов: s:=0; i:=1; while i>1 do begin s:=s+1/i; i:=i–1; end; 7. Определить значение переменной s после выполнения операторов: s:=1; n:=1; for i:=2 to n do s:=s+s1/i; 8. Сколько раз будет выполнятся тело цикла? k:=0; for i:=0 to 9 do k:=k+1; 9. Найдите ошибки в следующих фрагментах программы, если var k, i: integer; x, y: real: а) y:=0; for x:=0.1 to 0.9 do y:=y+sin x; б) k:=82; y:=1; for i:=1 to sqrt (k) do y:=2*y; 10. Найдите ошибки в следующих фрагментах программы, если var k, i: integer; x, y: real: а) k:=0; for i:=1 to 9 do i:=k+sqr(i); k:=k+1; б) k:=1; for i:=64 to 1 do begin i:=2*i; k:=k+1; end; Не нашли, что искали? Воспользуйтесь поиском:
|