Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Уроки программирования по Delphi.


Информационный Канал Subscribe.Ru


Delphi. Object Pascal. Уроки по программированию с сайта http://progs.biz

Рассылка №11

Delphi. Object Pascal. Урок 4. Операторы ветвления.
Delphi. Object Pascal. Урок 5. Циклы в Object Pascal.
Delphi. Object Pascal. Урок 6. Работа с массивами.

Полные версии уроков (с картинками) можно найти по адресам
Урок 4. Операторы ветвления.
Урок 5. Циклы в Object Pascal.
Урок 6. Работа с массивами.

Delphi. Pascal. Урок 4. Операторы ветвления

К операторам ветвления в Delphi относятся операторы if и case. Оператор if используется тогда, когда у нас есть выбор только из двух вариантов, case - в случае, когда мы имеем множественный выбор.

Вот пример использования оператора if:

...
var
  k: Integer;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  Readln(k);
  if k>0 Then
    WriteLn('Positiv number') //Число положительное
  else
    WriteLn('Negativ number'); //Число отрицательное
  ReadLn
end.

Данный фрагмент выводит на экран ту или иную фразу в зависимости от того, является ли введенное пользователем число положительным или отрицательным.

Веточку else можно не писать, если по логике программы она вам не нужна.

Как и в других аналогичных случаях, можно использовать составной оператор, образуемый парой begin - end:

...
  if k>0 Then
  begin
    WriteLn('Positiv number');
    k:=0
  end
 ...

Следующий пример - на оператор case:

  ...
  Readln(ch); //ch - типа char
  case ch of
  'f':
    WriteLn('woman'); //женщина
  'm':
    WriteLn('man'); //мужчина
  else
    WriteLn('unknown'); //неизвестный
  end;
  ReadLn
  ...

Указанный фрагмент печатает на экране woman, man если пользователь введет f или m соответственно или unknown, если пользователь введет что-то другое.

Как и для if, веточку else можно не писать и при необходимости выполнения нескольких операторов в одной из веточек их надо объединять посредством пары begin - end:

  ...
  case ch of
  'f':
  begin
    WriteLn('woman');
    WriteLn('Some text');
  end;
  'm':
    WriteLn('man');
  end;
  ...

В каждом из вариантов перед двоеточием может стоять несколько значений. Если это отдельные перечисляемые значения, то они разделяются запятой, если же нам надо указать диапазон значений, то мы используем две точки:

...
var
  k: Integer;
begin
  Readln(k);
  case k of
  1, 2:
    WriteLn('1 or 2');
  3..5:
    WriteLn('3, 4 or 5');
  end;
  ReadLn
end.

В данном фрагменте если k равно 1 или 2, то напечатается одна надпись, а если от 3 до 5 - то другая.

Наверх

Delphi. Pascal. Урок 5. Циклы в Object Pascal

В языке Pascal существует два вида циклов (один с двумя разновидностями, так что можно считать, что и три). Первый из двух - это цикл for. Он используется тогда, когда нам заранее известно, сколько раз цикл должен прокрутится (например, нам надо ввести ровно 10 чисел). Второй из двух типов (в нем два подтипа - while и until) - это цикл, который может прокрутиться заранее неизвестое число раз (пример его использования - это запрос у пользователя пароля. Заранее неизвестно, сколько раз пользователь будет вводить неправильный пароль). Рассмотрим все циклы на примерах.

Цикл for:

var
  k, i, sum: Integer;
 ...
  Readln(k); //читаем k
  sum:=0; //обнуляем сумму
  for i:=1 to k do
    sum:=sum+i;
  Writeln('sum=',sum);

В этом примере мы запрашиваем у пользователя число k, и затем подсчитываем сумму всех чисел от 1 до k.

Если нам надо объединить несколько операторов в теле цикла, то мы их пишем внутри begin - end.

Пример на цикл until:

var
  password: String;
 ...
  repeat
    Readln(password); //читаем пароль
  until (password='Secret');
  Writeln('OK');

В данном примере мы запрашиваем у пользователя пароль до тех пор, пока он не введет правильный ('Secret'). Обратите внимание, что циклы типа until используются тогда, когда тело цикла должно выполнится по крайней мере один раз (в нашем примере пароль уж один-то раз должен быть спрошен). Циклы типа until выполняютя до тех пор, пока условие после слова until ложно.

Пример на цикл while:

var
  k, i, factorial: Integer;
 ...
  factorial:=1;
  Readln(k); //читаем k
  i:=1;
  while i<=k do
  begin
    factorial:=factorial*i;
    i:=i+1;
  end;
  Writeln(k, '!=', factorial);
  ReadLn

В данном примере подсчитывается факториал введенного пользователем числа k (т. е. произведение всех чисел от 1 до k. Факториал обозначается !).

Циклы типа while выполняются до тех пор, пока условие после слова while истинно. Как следствие из этого, они могут не выполнится ни разу (если в условии сразу стоит ложь).

Наверх

Delphi. Pascal. Урок 6. Работа с массивами

Массивы в Pascal бывают статические (количество элементов в таком массиве известно заранее, на этапе компиляции) и динамческие (размер массива заранее не известен. В процессе работы программы к такому массиву можно добавлять элементы). Динамические массивы мы рассмотрим на одном из последующих уроков, а на этом уроке мы посмотрим, как работать с обычными статическими массивами.

Вот пример описания и работы со статическим массивом:

var
  a: Array [1..6] of integer; //заводим массив
  i: integer;
 ...
  for i:=Low(a) to High(a) do
  begin
    Writeln('Enter ', i, '-th element');
    ReadLn(a[i]); //Читаем i-й элемент
    Writeln('a[', i, ']=', a[i]);
  end;

Приведенный пример просит у пользователя заполнить одномерный массив из нескольких элементов (из 6) целыми числами.

Обратите внимание на объявление массива:

  a: Array [1..6] of integer;

В квадратных скобках мы указываем нижний и верхний номера для индекса массива. Если нам надо определить двумерных массив (например для задания игрового поля для шахмат), то мы должны написать что-то вроде

  chess: Array [1..8, 1..8] of integer;

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

Далее обратите внимание на функции Low() и High(). Они принимают в качестве параметра имя массива и возвращают номер первого и последнего элементов соответственно. Рекомендуется использовать именно эти функции, а не писать конкретные значения для номера первого и последнего элементов - так в последствии будет легче вносить в программу необходимые изменения. Наряду с этими двумя функциями существует и функция Lenght(), которая возвращает длину массива. Действие этих функций для одномерного массива понятно. Для многомерных же массивов они возвращают значения (нижний и верхний номера и длину) для первого измерения.

Наверх

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное