Курс лекций по дисциплине "Программирование и комьпютеры"

Автор работы: Пользователь скрыл имя, 11 Декабря 2013 в 22:12, курс лекций

Краткое описание

Delphi – это среда быстрой разработки, в которой в качестве языка про-граммирования используется язык Delphi. Язык Delphi – строго типизиро-ванный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. В настоящее время программистам стала доступна очередная версия пакета Delphi – Borland Delphi 7 Studio.

Вложенные файлы: 1 файл

лекции по проге.doc

— 748.50 Кб (Скачать файл)

 

  • КонтекстСправки – параметр, определяющий раздел справочной системы, который появится на экране, когда пользователь нажмет клавишу <F1>. Если вывод справки не предусмотрен, то значение параметра КонтекстСправки должно быть равно нулю.

В языке ObjectPascal основной программной единицей является подпрограмма. Различают два вида подпрограмм: процедуры и функции. Отличие функции от процедуры заключается в том, что с именем функции связано значение, поэтому имя функции можно использовать в выражениях. Это значение нужно присвоить переменной result, которая нигде не описывается.

В качестве примера приведена программа  перевода фунтов в килограммы, использующая функцию, окно ввода и окно вывода (Листинг 4).

Форма имеет вид, показанный на рис. 10.

 

// нажатие кнопки  Выполнить Листинг 4

procedure TForm1.Button1Click(Sender: TObject);

function FuntToKg(f:real):real;

   const

      K=0.4095; // 1 фунт  равен 409,5 г.

   begin

      result:=f*K;

   end;

var

   funt,kg:real;

   s:string;

begin

   s:=InputBox('Фунты-килограммы','Введите вес в фунтах','');

   funt:=StrToFloat(s);

   kg:=FuntToKg(funt);

   ShowMessage(FloatToStr(kg));

end;


 

Самостоятельно создайте аналогичную  программу для вычисления в системе  СИ веса тела (Р), имеющего массу m. Используйте формулу P = m*g.

ИНСТРУКЦИИ  ЯЗЫКА

 

Выбор в точке разветвления алгоритма очередного шага программы  может быть реализован при помощи инструкций if и case. Инструкция if позволяет выбрать один из двух возможных вариантов, инструкция case – один из нескольких.

Инструкция if

Эта инструкция позволяет  выбрать один из двух возможных вариантов  развития программы. Выбор осуществляется в зависимости от выполнения условия.

В общем виде инструкция if записывается так:

if условие

   then

      begin

         { здесь инструкции, которые надо выполнить, если условие истинно }

      end

   else

      begin

      { здесь инструкции, которые надо выполнить, если  условие ложно }

      end;

Если между словами begin и end находится только одна инструкция, то слова begin и end можно не писать.

Если какое-либо действие должно быть выполнено только при  выполнении определенного условия и пропущено, если это условие не выполняется, то слово else и следующие за ним инструкции можно не писать.

В качестве примера рассмотрим программу вычисления стоимости междугороднего телефонного разговора. Стоимость разговора в выходные дни ниже, чем в обычные.

Программа, текст которой приведен в листинге 5, запрашивает длительность разговора и день недели, а затем вычисляет стоимость разговора.  
В субботу и в воскресенье стоимость уменьшается на величину скидки.  
Цена минуты разговора и величина скидки задаются в тексте программы как константы.


На рис. 11, а приведена блок-схема решения задачи. Вид диалогового окна приведен на рис. 11, б.


 

// нажатие кнопки Вычислить      Листинг 5

procedure TForm1.Button1Click(Sender: TObject);

const

   pay=0.15;          // цена одной минуты разговора  (руб.)

   discount=0.2;    // скидка 20%

var

   t,s:real;             // время и стоимость разговора

   day:integer;     // номер дня недели

begin

   t:=StrToFloat(Edit1.Text);

   day:=StrToInt(Edit2.Text);

   s:=pay*t;   // стоимость разговора

  {Если день - суббота или воскресенье, то уменьшить стоимость на величину скидки}

   if (day=6) or (day=7) then s:=s*(1-discount);

   label3.caption:='К оплате '+FloatToStr(s)+' руб.';

end;


 

Часто в программе необходимо реализовать  выбор более чем из двух вариантов. В этом случае можно внутри инструкции if поместить еще одну такую инструкцию. Например, известно, что для каждого человека существует оптимальное значение веса, которое может быть вычислено по формуле:  Рост(см) – 100. Напишите программу, которая запрашивает вес и рост, вычисляет оптимальное значение, сравнивает его с реальным весом и выводит соответствующие сообщения. На рис. 12 приведен алгоритм программы. На рис. 13 приведено диалоговое окно. Попробуйте сначала не заглядывать в листинг 6.


// Щелчок на  кнопке Вычислить Листинг 6

procedure TForm1.Button1Click(Sender: TObject);

var

   w,h,opt,d:real;

begin

   w:=StrToFloat(Edit1.Text);   // вес

   h:=StrToFloat(Edit2.Text);   // рост

   opt:=h-100;

   d:=w-opt;

   if d=0 then label3.Caption:='Вы в хорошей форме'

   else

      if d<0 then label3.Caption:='Вам надо поправиться на '+

                                   FloatToStr(-d)+' кг.'

      else label3.Caption:='Вам надо похудеть на '+

                                   FloatToStr(d)+' кг.';

end;


Инструкция case

В предыдущем примере, в программе контроля веса, множественный выбор был реализован при помощи вложенных одна в другую инструкций if. Такой подход не всегда удобен, особенно в том случае, если количество вариантов хода программы велико.

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

Case Селектор of

   Список1: begin

                        {инструкция 1}

                    end;

   Список2: begin

                        {инструкция 1}

                    end;

………………………………………

   СписокN: begin

                        {инструкция 1}

                    end;

                    else

                        begin

                           {инструкция 1}

                       end;

end;

где:

  • Селектор – выражение, значение которого определяет дальнейший ход выполнения программы;
  • СписокN – список констант. Если константы представляют собой диапазон чисел, то вместо списка можно указать первую и последнюю константы, разделив их точками.

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

В качестве примера рассмотрим программу, которая пересчитывает вес из фунтов в килограммы. Программа учитывает, что в разных странах фунт «весит» по-разному. Например, в России фунт равен 409,5 граммов, в Англии – 453,592 грамма, в Германии, Дании и Исландии – 500 граммов.

В диалоговом окне программы, изображенном на рис. 14, для выбора страны используется список Страна. Для выбора названия страны используется список – компонент ListBox. Значок компонента ListBox находится на вкладке Standard (Рис. 15). Список стран можно написать в окне String List Editor (Рис. 16, б), которое откроется, если щелкнуть на кнопку с тремя точками в свойстве Items (Элементы списка) (Рис. 16, а).

Кроме этого компонент ListBox имеет другое важное свойство – ItemIndex (Номер выбранного элемента списка. Номер первого элемента списка равен нулю. Если ни один из элементов списка не выбран, то значение свойства равно минус единице.).

Список может быть сформирован  и во время работы программы.

Текст программы приведен в листинге 7.

 

procedure TForm1.Button1Click(Sender: TObject); Листинг 7

var

   funt,kg,k:real;

begin

   case ListBox1.ItemIndex of


      0: k:=0.4095;      // Россия

      1: k:=0.453592;  // Англия

      2: k:=0.56001;    // Австрия

      3..5,7:k:=0.5;      // Германия, Дания, Исландия, Нидерланды

      6: k:=0.31762;    // Италия

   end;

   funt:=StrToFloat(Edit1.Text);

   kg:=funt*k;

   label4.caption:=Edit1.text+' ф. - это '+

                    FloatToStrF(kg,ffFixed,6,3)+' кг.';

end;


 

Переделайте программу  стоимости междугороднего разговора, используя инструкцию case и компоненту ListBox. Внесите изменения в исходные данные: скидка в субботу – 10%, в воскресенье – 20%.

Если вы затрудняетесь, посмотрите листинг 8. На рис. 16' показано диалоговое окно в ходе составления программы и в процессе ее работе.

Сохраните переделанную программу под другим именем.

 

// нажатие кнопки  Вычислить Листинг 8

procedure TForm1.Button1Click(Sender: TObject);

const  pay=0.15;    // цена одной минуты разговора  (руб.)

var     t,s,k:real;     // время разговора, его стоимость, скидка

begin

   t:=StrToFloat(Edit1.Text);   // время разговора

   case ListBox1.ItemIndex of  // день недели

      0..4: k:=0;              // Рабочий день

      5: k:=0.1;               // Суббота

      6: k:=0.2;               // Воскресенье

   end;

   s:=pay*t*(1-k);

   label4.caption:=FloatToStrF(s,ffFixed,6,2)+' руб.';

end;


 

           

Рис. 16'

 

Контрольные вопросы  к лекции 3

  1. Окно ввода – это стандартное окно, которое появляется на экране в результате вызова функции
  2. Окно вывода с текстом и командной кнопкой ОК появляется на экране в результате вызова процедуры
  3. Окно вывода текста с одним из стандартных значков появляется на экране в результате вызова функции
  4. Какого типа значение функции InputBox?
  5. Из скольких возможных вариантов позволяет выбрать инструкция if?
  6. Из скольких возможных вариантов позволяет выбрать инструкция case?

 

Циклы

Алгоритмы решения многих задач являются циклическими, т.е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз. В программе цикл может быть реализован при помощи инструкций for, while и repeat.

Инструкция for

В общем виде инструкция for записывается следующим образом:

For <счетчик>:=<начальное значение> to <конечное значение> do

   begin

      {здесь инструкции, которые надо выполнить несколько  раз}

   end;

где <счетчик> – переменная целого типа, изменяющаяся от <начального значения> до <конечного значения> включительно.

Если начальное значение счетчика больше конечного, то последовательность операторов между begin и end не будет выполнена ни разу. После каждого выполнения инструкций тела цикла счетчик циклов увеличивается автоматически. Переменную <счетчик> можно использовать внутри цикла (но не изменять без надобности).

Рассмотрим программу, которая  вычисляет сумму первых 10 элементов ряда: 1 + 1/2 + 1/3 +… +1/i +… Диалоговое окно программы показано на рис. 17.

Здесь появился новый компонент Panel, значок которого расположен на вкладке Standard (Рис. 18). Этот компонент служит только для украшения диалогового окна и не несет никакой функциональной нагрузки. Компоненты Edit1 и Panel2 расположены поверх компонента Panel1. Компонент Label3 для вывода результата расположен поверх компонента Panel2.

 

 

 

Текст программы приведен в листинге 9.

procedure TForm1.Button1Click(Sender: TObject); Листинг 9

var

   i,n:integer;

   s:real;

begin

   n:=strToInt(Edit1.Text);

   s:=0;

   for i:=1 to n do s:=s+1/i;

   label3.Caption:='Сумма ряда равна '+FloatToStr(s);

end;


 

Если в инструкции for вместо слова to записать downto, то значение счетчика будет не увеличиваться, а уменьшаться. В этом случае <начальное значение> должно быть больше <конечного значения>.

Инструкция while

Инструкция while используется в том случае, если некоторую последовательность действий надо выполнить несколько раз, причем необходимое число повторений во время разработки программы неизвестно и может быть определено только во время работы программы.

В общем виде инструкция while записывается следующим образом:

while условие do

   begin

      // здесь  инструкции, которые надо выполнить несколько раз

   end;

где условие – выражение логического типа, определяющее условие выполнения инструкций цикла.

Для того чтобы инструкции цикла, которые находятся между  словами begin и end были выполнены хотя бы один раз, необходимо, чтобы перед выполнением инструкции while значение выражения условие было истинно. Для того чтобы цикл завершился, нужно, чтобы последовательность инструкций между словами begin и end влияла на значение выражения условие (изменяла значения переменных, входящих в выражение условие).

Информация о работе Курс лекций по дисциплине "Программирование и комьпютеры"