11537

Программирование разветвляющихся алгоритмов

Лекция

Информатика, кибернетика и программирование

Тема 2. Программирование разветвляющихся алгоритмов Цель лабораторной работы: научиться пользоваться простейшими компонентами организации переключений TСheckBox TRadioGroup. Написать и отладить программу разветвляющегося алгоритма. 2.1. Операторы if и case языка Паскаль Для...

Русский

2013-04-08

111 KB

48 чел.

Тема 2. Программирование разветвляющихся алгоритмов

 Цель лабораторной работы: научиться пользоваться простейшими компонентами организации переключений (TСheckBox, TRadioGroup). Написать и отладить программу разветвляющегося алгоритма.

2.1. Операторы if и case языка Паскаль

Для программирования разветвляющихся алгоритмов в языке Pascal используются специальные переменные типа boolean, которые могут принимать только два значения - true и false (да, нет), а также операторы if и case. Оператор if проверяет результат логического выражения, или значение переменной типа boolean, и организует разветвление вычислений.

Например, если bl: boolean, x,y,u:integer, то фрагмент программы с оператором if может быть таким:

       bl:=x>y;

if  bl    then u:=x-y;

            else u:=x-y;

Оператор выбора case организует разветвления в зависимости от значения некоторой переменной перечисляемого типа.

Например, если in: integer, то после выполнения

   case in of

   0: u:=x+y;

   1: u:=x-y;

   2: u:=x•y;

   else u=0;

   end;

в соответствии со значением in вычисляется u. Если in=0, то u=x+y, если in=1, то u=x-y, если in=2, то u=x*y, а u=0 при любых значениях in отличных от 0, 1 или 2.

2.2. Кнопки-переключатели в Delphi

При создании программ в DELPHI для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме. На форме (рис.2.1) представлены кнопки-переключатели двух типов (TCheckBox, TRadioGroup ).

Компонент TCheckBox организует кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевской переменной, которая проверяется с помощью оператора if.

Компонент TRadiogroup организует группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,..), который анализируется с помощью оператора case.

2.3. Пример написания программы

 Задание: ввести три числа - x,y,z. Вычислить по усмотрению u=sin(x) или u=cos(x), или u=tg(x). Найти по желанию максимальное из трех чисел: max(u,y,z), или max (|u|,|y|,|z|).

Cоздать форму, представленную на рис. 2.1, и написать соответствующую программу.

2.3.1. Coздание формы

Создайте форму, такую же как в первом задании, скорректировав текст надписей и положение окон TEdit.

2.3.2.Работа с компонентом TСheckBox

Выберите в меню компонентов Standard пиктограмму  и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на “maxabs”. В тексте программы появилась переменная CheckBox1 типа TСheckBox. Теперь в зависимости от того, нажата или нет кнопка, булевская переменная CheckBox1.Checked будет принимать значения true или false.

2.3.3. Работа с компонентом TRadioGroup

Выберите в меню компонентов Standard пиктограмму  и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок ( Caption ) на U(x). Для того чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке - cos(x), во второй - sin(x), в третьей - tg(x), нажмите ОК.

После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями.

Обратите внимание на то, что в тексте программы появилась переменная RadioGroup1 типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1.ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.

2.3.4. Создание обработчиков событий FormСreate и Botton1Сlick

Процедуры - обработчики событий FormСreate и Botton1Сlick создаются аналогично тому, как и в первой теме. Текст процедур приведен ниже.

Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно. Форма приведена на рис.2.1.

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

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls;

type

 TForm1 = class(TForm)

   CheckBox1: TCheckBox;

   RadioGroup1: TRadioGroup;

   Memo1: TMemo;

   Button1: TButton;

   Edit1: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   Edit2: TEdit;

   Label3: TLabel;

   Edit3: TEdit;

   procedure FormCreate(Sender: TObject);

   procedure Button1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

 Edit1.text:='0,1';

 Edit2.text:='0,356';

 Edit3.text:='0';

 Memo1.Clear;

 Memo1.Lines.Add('Рез-ты ст. гр.920201 Петрова И.И.');

end;

procedure TForm1.Button1Click(Sender: TObject);

var x,y,z,u,ma:extended;

begin

    // Ввод исходных данных и их вывод в окно Memo1

    x:=StrToFloat(Edit1.Text);

       Memo1.Lines.Add(' x='+Edit1.Text);

    y:=StrToFloat(Edit2.Text);

       Memo1.Lines.Add(' y='+Edit2.Text);

    z:=StrToFloat(Edit3.Text);

       Memo1.Lines.Add(' z='+Edit3.Text);

            // Проверка номера нажатой кнопки и выбор соответствующей ей функции

    case RadioGroup1.ItemIndex of

       0: u:=cos(x);

       1: u:=sin(x);

       2: u:=sin(x)/cos(x);

        end;

                   // Проверка состояния кнопки CheckBox1

         if  CheckBox1.Checked then

                  begin u:=abs(u);

                        y:=abs(y);

                        z:=abs(z) end;

                  // Нахождение максимального из трех чисел

   if u>y then ma:=u else ma:=y;

   if z>ma then ma:=z;

     if  CheckBox1.Checked then

      Memo1.Lines.Add(' maxabs='+FloatToStrF(ma,ffFixed,8,2))

                           else

      Memo1.Lines.Add(' max='+FloatToStrF(ma,ffGeneral,8,2));

end;

end.

2.4. Выполнение индивидуального задания

По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x2, ex. Отредактируйте вид формы и текст программы, в соответствии с полученным заданием.

0: u:=sqr(sqr(x)+y)-power((sqr(x)*y),1/2);

       1: u:=sqr(sqr(x)+y)+power(abs(sqr(x)*y),1/2);

       2: u:=sqr(sqr(x)+y)+1;

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16. Известно, что из четырех чисел ,, и  одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n.

17. По номеру n (n>0) некоторого года определить c – номер его столетия (учесть, что, к примеру, началом XX столетия был 1901, а не 1900 год!).

18. Значения переменных a, b и с поменять местами так, чтобы оказалось a<=b<=c.

19. Дано целое k от 1 до 180. Определить, какая цифра находится в k-й позиции последовательности 10111213…9899 , в которой выписаны подряд все двузначные числа.

20. Дано натуральное k. Определить k–ю цифру в последовательности 110100100010000100000…, в которой выписаны подряд степени 10.

21. В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: green (зеленый), red (красный), yellow (желтый), white (белый) и black (черный). Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1984 год – год зеленой крысы –был началом очередного цикла). Разработать программу, которая вводит номер некоторого года нашей эры и выводит его название по старояпонскому календарю.

22. Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y  полусуммой двух оставшихся значений.

23. Для целого числа k от 1 до 99 вывести фразу “мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить на слово “год” или “года”.

24. Для натурального числа k вывести фразу “мы выпили k бутылок пива”, согласовав окончание слова “бутылка” с числом k.

25. Type курс=(C,В,Ю,З);  {север, восток, юг, запад}

  Приказ=(вперед, вправо, назад, влево);

  Var K1,K2:курс; ПР:приказ;

Корабль сначала шел по курсу K1, а затем его курс был изменен согласно приказу ПР. Определить K2 - новый курс корабля.

26. Type месяц=(январь,февраль,март,апрель,май,июнь,июль,август,

                                  сентябрь,октябрь,ноябрь,декабрь);

                    день=1..31;

             var d1,.d2:день;

                    m1,m2:месяц;

       t:boolean;

Переменной t присвоить значение 1 если дата d1, m1 предшествует (в рамках года) дате d2, m2, и значение 0 в других случаях.

27. Type нота=(до,ре,ми,фа,соль,ля,си);

       интервал=(секунда,терция,кварта,квинта,секста,септима);

      var n1,n2:нота;

                  i:интервал;

Определить i-й интервал, образованный нотами n1 и n2(n1n2): секунда - это интервал из двух соседних (по кругу) нот (например, ре и ми, си и до), терция -интервал через ноту (например, фа и ля, си и ре) и т.д.

28. Type единица=(дециметр,километр,метр,миллиметр,сантиметр);

длина=real;

 Var      x : длина;

  P : единица;

Значение переменной x, означающее некоторую длину в единицах p,заменить на величину этой же длины в метрах.

29. Type сезон=(зима,весна,лето,осень);

Var m:месяц;     {определение «месяц» см. в 26}

      S:сезон;

Определить s-сезон, на который приходится месяц m.

30. Var k:1..9; Вывести значение переменной k римскими цифрами.


Рис. 2.1


 

А также другие работы, которые могут Вас заинтересовать

63142. Чисті речовини та суміші 21.44 KB
  Мета: Сформувати в учнів уявлення про чисті речовини і суміші навчити їх розрізняти закріпити уявлення про атомномолекулярну будову речовини ознайомити з простими і складними речовинами що зустрічаються в довкіллі...
63143. Урок мужності і героїзму присвячений 70-річчю визволення Києва від німецько-фашистських загарбників 25.09 KB
  Мета: формувати в учнів початкової школи почуття патріотизму, любові до свого народу, його історії та героїчного минулого на прикладі подвигу людей, які загинули під час окупації та визволення Києва від німецько-фашистських загарбників; виховувати повагу...
63145. Тваринництво рідного краю 19.63 KB
  Мета: формувати поняття про тваринництво як галузь сільського господарства; дати знання про галузі тваринництва; розкрити їх значення для людини; виховувати патріотичне ставлення до землі рідного краю любов до України пошану до людей та їхньої праці.