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


 

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

38438. Разработка моделирование процесса поддержки заданных климатических условий в помещении в системе InTouch 2.09 MB
  Трехдиапазонный регулятор температуры 60 3. Ведь отапливать рабочие помещения в выходные и праздничные дни не следует так интенсивно как по будням или скажем интенсивность отопления должна зависеть от температуры за окном а не от календарного времени года: вспомним хотя бы минувшую зиму когда в январе была плюсовая температура а отопление по интенсивности было “зимним†приходилось открывать окна в зданиях а можно было всего лишь снизить мощность обогрева тем самым сэкономить значительные средства. Возможные колебания...
38439. Синтез системы управления спуском космического аппарата на поверхность Марса методом интеллектуальной эволюции 1.52 MB
  Преодолеть указанные ограничения в данной работе предлагается путем ухода от построения оптимального управления как функции времени, так как оно не учитывает поведения системы уже в процессе функционирования и влияния этого поведения на дальнейшее состояние всей системы.
38440. Информационной безопасности облачных сервисов на базе мобильных облачных вычислений с использованием метода PP-CP-ABE 2.51 MB
  Целью данной работы является анализ существующих методов информационной безопасности и выбор соответствующего метода который должен подходить под соответствующие требования: Обеспечение надёжного шифрования данных при передаче их от пользователя к провайдеру услуг по хранению данных Минимизация нагрузки на облачные сервисы Возможность применения метода для лёгких мобильных устройств. Эффективные и безопасные операции по хранению данных для мобильного облачного вычисления. Параметры для хранения данных....
38441. Многокритериальный синтез позиционного управления с моделью 6-го порядка на основе метода формирования притягивающих многообразий 4.39 MB
  Можно выделить три типовых подхода в которых сгруппирован ряд известных методов. Это, так называемые, прямые интерактивные методы, например, на основе конусов доминирования и генетического программирования; методы скаляризации, такие как, свертка показателей, пороговая и лексикографическая оптимизация
38442. Исследование экономических показателей предприятия при помощи систем СТЭК 2.3 MB
  Исходные данные для среднестатистического предприятия олигополии В работе имеют место следующие исходные данные: годовая характеристика спроса на товар определяемая бюджетными ограничениями потребителей их предпочтениями и эластичностью вычислить по предложенной методике на базе Const=40 млн. год; доля капитала уплачиваемая за аренду оборудования = 150 год; показатели технологического процесса фирм ; ; планируемые производственные затраты фирм млн. допустимые значения ресурсов труда и капитала: чел; млн. 1 2 3 СТЭК 1 7 1...
38443. Разработка и исследование метода грамматической эволюции для структурно-параметрического синтеза системы управления динамическим объектом 1.63 MB
  Цель синтеза управления заключается в том, чтобы найти такое управление, при котором поведение объекта управления удовлетворяло бы заданным критериям. Данная задача до сих пор не решена аналитически в общем виде.
38444. Разработка и исследование метода сетевого оператора для логического вывода экспертной системы 1.29 MB
  Экспертные системы обычно определяют как программы ЭВМ, моделирующие действия эксперта-человека при решении задач в узкой предметной области на основе накопленных знаний, составляющих базу знаний. ЭС выдают советы, проводят анализ, дают консультации, выполняют классификацию и т.д. Практическое применение ЭС на предприятиях способствует значительному увеличению эффективности работы.
38445. Расчёт плиты опертой по контуру 210.72 KB
  22:2006 для торгових приміщень 15 12 18 Всего p=15 p=18 Полная Всего gp=8219 gp=9313 Поле плиты в осях 15АД: Нагрузка приходящая на всё поле плиты: Максимальные изгибающие моменты на полосе шириной 1м: для пролётных моментов: для опорных моментов: де табличные коэффициенты для опирания плиты. Для пролетных моментов: Для опорных моментов: Определяем пролетную арматуру в направлении lк: Rs = 355 МПа расчетное сопротивление арматуры растяжению для...
38446. Разработка мероприятий по совершенствованию управления мотивацией персонала ИП Correct Way 998 KB
  Внутреннее вознаграждение человек получает от работы ощущая значимость своего труда испытывая чувство к определенному коллективу удовлетворение от общения дружеских отношений с коллегами. Стимулирование труда предполагает создание условий при которых в результате активной трудовой деятельности работник будет трудиться более эффективно и более производительно т. Здесь стимулирование труда создает условия для осознания работником что он может трудиться более производительно и возникновения желания рождающего в свою очередь...