Программирование разветвляющихся алгоритмов
Характеристика простейших компонентов организации переключений TСheckBox и TRadioGroup. Программирование разветвляющегося алгоритма на языке Паскаль. Редактирование вида формы и текста программы для вычисления указанных переменных по заданным формулам.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 11.02.2011 |
Размер файла | 56,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Программирование разветвляющихся алгоритмов
Введение
Цель лабораторной работы: научиться пользоваться простейшими компонентами организации переключений (TСheckBox, TRadioGroup). Написать и отладить программу разветвляющегося алгоритма.
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. Кнопки-переключатели в Delphi
При создании программ в DELPHI для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме. На форме (рис.2.1) представлены кнопки-переключатели двух типов (TCheckBox, TRadioGroup ).
Компонент TCheckBox организует кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевской переменной, которая проверяется с помощью оператора if.
Компонент TRadiogroup организует группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,..), который анализируется с помощью оператора case.
3. Пример написания программы
Задание: ввести три числа - x,y,z. Вычислить по усмотрению u=sin(x) или u=cos(x), или u=tg(x). Найти по желанию максимальное из трех чисел: max(u,y,z), или max (|u|,|y|,|z|).
Cоздать форму, представленную на рис. 2.1, и написать соответствующую программу.
Создайте форму, такую же как в первом задании, скорректировав текст надписей и положение окон TEdit.
Работа с компонентом TСheckBox
Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на “maxabs”. В тексте программы появилась переменная CheckBox1 типа TСheckBox. Теперь в зависимости от того, нажата или нет кнопка, булевская переменная CheckBox1.Checked будет принимать значения true или false.
Работа с компонентом TRadioGroup
Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок ( Caption ) на U(x). Для того чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке - cos(x), во второй - sin(x), в третьей - tg(x), нажмите ОК.
После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями.
Обратите внимание на то, что в тексте программы появилась переменная RadioGroup1 типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1.ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.
Создание обработчиков событий FormСreate и Botton1Сlick
Процедуры - обработчики событий FormСreate и Botton1Сlick создаются аналогично тому, как и в первой теме. Текст процедур приведен ниже. Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно. Форма приведена на рис.2.1.
Текст программы приведен ниже.
Размещено на http://www.allbest.ru/
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.
4. Выполнение индивидуального задания
По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x2, ex. Отредактируйте вид формы и текст программы, в соответствии с полученным заданием.
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(n1?n2): секунда - это интервал из двух соседних (по кругу) нот (например, ре и ми, си и до), терция -интервал через ноту (например, фа и ля, си и ре) и т.д.
28. Type единица=(дециметр,километр,метр,миллиметр,сантиметр);
длина=real;
Var x : длина;
P : единица;
Значение переменной x, означающее некоторую длину в единицах p,заменить на величину этой же длины в метрах.
29. Type сезон=(зима,весна,лето,осень);
Var m:месяц; {определение «месяц» см. в 26}
S:сезон;
Определить s-сезон, на который приходится месяц m.
30. Var k:1..9; Вывести значение переменной k римскими цифрами.
Размещено на Allbest.ru
Подобные документы
Составление алгоритмов и программ для вычисления значений неизвестных: программирование формул; операторы ввода и вывода; условный оператор; цикл с предусловием и с постусловием, с заданным числом повторений; графические средства; тестирование программы.
курсовая работа [1,5 M], добавлен 13.03.2011Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.
учебное пособие [211,1 K], добавлен 30.03.2008Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.
отчет по практике [913,8 K], добавлен 21.07.2012Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.
реферат [2,1 M], добавлен 16.09.2011Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013Анализ функции и разработка алгоритма по ее вычислению. Программирование отдельных блоков и структур алгоритма. Структура Паскаль-программы. Раздел описаний, подпрограммы, тело программы. Полная Паскаль-программа в соответствии с разработанным алгоритмом.
курсовая работа [241,8 K], добавлен 30.01.2016Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012Выбор метода проектирования транслятора с языка Паскаль на язык Си, разработка и кодирование алгоритма программы. Использование допустимых операторов в исходном тексте, определение типов переменных и синтаксиса логических и арифметических выражений.
курсовая работа [1,0 M], добавлен 03.07.2011Описание особенностей программирования циклических алгоритмов на С/С++. Использование операторов цикла для организации повтора в программе определенных действий. Создание и реализация программы приближенного вычисления интеграла методом трапеций.
лабораторная работа [86,3 K], добавлен 25.03.2019История и основы структурного программирования в среде Turbo Pascal. Работа с различными типами данных. Операторы языка. Работа с символьными и строковыми переменами, одномерным, двумерным массивами. Классификация компьютерных игр. Игры на языке Паскаль.
курсовая работа [28,8 K], добавлен 06.05.2014