лабораторные работы лазарус. лабораторные работы на Лазарусе. Лабораторная работа 1 Основные понятия среды Lazarus
Скачать 1.42 Mb.
|
procedure TForm1.Button1Click(Sender: TObject); var x,y:real; begin x:=strtofloat(edit1.text); y:=strtofloat(edit2.text); if (x>=-1) and (x<=3) and (y>=-2) and (y<=4) then checkbox1.state:=cbchecked else checkbox2.state:=cbchecked; end; procedure TForm1.Button2Click(Sender: TObject); begin Рис. 23. 26 edit1.clear; edit2.clear; edit1.setfocus; checkbox1.state:=cbunchecked; checkbox2.state:=cbunchecked; end; Задания для самостоятельного выполнения 1. Дано вещественное число x. Для функции, представленной графиком, вычислить x f y 2. Найти максимальное (минимальное значение). 3. Выяснить, принадлежит ли точка Р(х, у) заштрихованной области. Вари- ант Задание 1 2 3 1 min ( 2 2 y x , z , xyz ) 2 max ( 2 2 2 z y x , xyz , 4 y x ) 3 min ( y x , 2 x z , 3 45 x ) 4 min ( y x sin , y 6 5 , z tg ) 5 max ( y x sin , z tg 2 , y x ) 27 6 min ( 2 2 sin y x , z tg , y x ) 7 max ( y x sin , z tg 2 10 , 3 6 y ) 8 max ( y x ln , z tg , y x ) 28 Лабораторная работа №4 Оператор выбора Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит ключ выбора s – выражение любого порядкового типа (кроме типов Real и String). Синтаксис: Case s of c 1 :оператор1; c 2 :оператор2; …………….. c n :оператор n Else оператор; End; выбор при условие 1: действия 1 при условие 2: действия 2 ……………………………. при условие n: действия n иначе действия n+1 все где c 1 , c 2 , …, c n – все простые типы Integer, Char, за исключением Real. Это конкретное значение управляющей переменной и выражения s, при котором необходимо выполнить соответствующий оператор, игнорируя все остальные. Если в наборе несколько значений, то они разделяются между собой «,». Можно указывать диапазоны значений между которыми ставятся «..». Между набором значений с и соответствующим ему оператором должно стоять «:». Значения c 1 … c n не должны повторяться. Для работы с оператором выбора в Lazarus служат несколько компонент. Компонент RadioGroup Компонент представляет собой комбинацию GroupBox с набором Radi- oButton, т. е. контейнер для размещения зависимых переключателей, каждый переключатель помещается в специальный список Items и доступен по индексу. Таблица 12 Основные свойства компонента RadioGroup Caption Заголовок Columns Количество столбцов переключателей ItemIndex Индекс выбранного переключателя (нумерация индексов начинается с нуля) Items Список строк с заголовками элементов Если у компоненты RadioGroup свойство ItemIndex принимает значение (–1), то не один из переключателей не будет выделен. запись оператора выбора на алго- ритмическом языке 29 Особенности компонента RadioGroup: 1. Щелчок мыши выделяет строку в виде радиокнопки с точкой. 2. В данный момент времени может быть включена максимально одна ра- диокнопка. Понятие «зависимый переключатель» говорит о влияние одной радиокнопки на другую. Если одна радиокнопка включена, то остальные выключены. При включение другой, предыдущая автоматически отключится. Компонента ListBox Компонент содержит список элементов, которые могут быть выбраны при помощи клавиатуры или мыши. Список может содержать строки и произвольное изображение. Список задается свойством Items и доступен по индексу. Таблица 13 Основные свойства компонента ListBox Columns Количество столбцов элементов в списке ItemIndex Индекс выбранной строки (нумерация индексов начинается с нуля) Items Список строк с заголовками элементов Если у компоненты ListBox свойство ItemIndex принимает значение (–1), то ни одна из строк не будет выделена. Особенности компонента ListBox: 1. Щелчок мыши выделяет всю строку. 2. Выбор строки снимает выделение других строк. 3. Редактирование набора строк невозможно. Компонент Memo Компонент Memo – это многострочное окно ввода-вывода данных. Компо- нент представляет собой небольшой текстовый редактор, имеет ограничения на объем текста в 32Кб, что составляет 10-20 строк. Текст хранится в свойстве Lines класса TStrings. В целом компонент представляет собой пронумерованный набор строк. Таблица 14 Основные свойства компонента Memo Lines Содержит строки текста (нумерация строк начинается с 0) ScrollBars Определяет наличие полос прокруток (ssNone, ssHorizontal, ssVertical, ssBoth) MaxLength Определяет максимальную длину текстовой строки. Если имеет значение 0, то длина строки не ограничена Text Содержит весь текст 30 Таблица 15 Основные методы компонента Memo Add(s) Добавляет строку в набор данных последней и возвращает ее индекс Clear Очищает набор данных. Delete(n) Удаляет строку с индексом n. Insert(n; s) Вставляет строку s в набор с индексом n. String[n] Получить текст в строке с номером n Count Получить количество строк в Memo Задание 1. Создать приложение (Калькулятор), обеспечивающее ввод двух целых чисел и выполнение над ними арифметических операций: сложе- ния, вычитания, умножения и вещественного деления. Для выбора операции используется набор переключателей. Вывести сообщение об ошибке при вводе делителя, равного нулю. Определим переменные задачи: входные данные: a, b: integer; результат: c: real. Для решения задачи расположим компоненты на форме (рис. 24). Свойства выбранных компонент: Form1 – Caption – Калькулятор RadioGroup1 – Caption – Операция Items – сумма, разность, произведение, частное Label1 – Caption – 1-ое число Label2 – Caption – 2-ое число Label3 – Caption – Результат Edit1 – Text – пусто Edit2 – Text – пусто Edit3 – Text – пусто Button1 – Caption – Вычислить Button2 – Caption – Очистить Процедура для кнопки «Вычислить» будет иметь вид: procedure TForm1.Button1Click(Sender: TObject); var a,b:integer; c:real; begin a:=strtoint(edit1.text); Рис. 24. 31 b:=strtoint(edit2.text); case RadioGroup1.ItemIndex of 0:c:=a+b; 1:c:=a-b; 2:c:=a*b; 3: if b=0 then showmessage('На ноль делить нельзя!') else c:=a/b; end; edit3.text:=floattostr(c); end; Задание 2. Самостоятельно записать процедуру для кнопки «Очистить». Задание 3. Имеется список периодических изданий. Для выбранного изда- ния вывести день недели, в который он выходит. Вывод дня недели осуществить в многострочное окно ввода-вывода. Определим переменные задачи: промежуточная переменная: n (индекс выбранной строки): integer. Для решения задачи расположим компоненты на форме (рис. 25). Свойства выбранных компонент: ListBox1 – Items – Комсомольская правда, АиФ, Тема, Моя мадонна, Телепорт, Из рук в руки, Жизнь, Дважды два, Навигатор Label1 – Caption – Издания Label2 – Caption – Дни выхода издания Memo1 – Lines – пусто Button1 – Caption – Очистить Form1 – Caption – Периодические издания В программе будет осуществляться выбор одной из строк с названием перио- дического издания, поэтому процедура бу- дет иметь вид: procedure TForm1.ListBox1.Click (Sender: TObject); var n:integer; begin Рис. 25. 32 n:= ListBox1.ItemIndex; case n of 0: Memo1.lines.add('понедельник'); 1: Memo1.lines.add('ежедневно, кроме воскресенья'); 2: Memo1.lines.add('четверг'); 3: Memo1.lines.add('четверг'); 4: Memo1.lines.add('пятница'); 5: Memo1.lines.add('суббота'); 6: Memo1.lines.add('четверг'); 7: Memo1.lines.add('пятница'); 8: Memo1.lines.add('пятница'); end; end; Задание 4. Самостоятельно записать процедуру для кнопки «Очистить». Задание 5. В городе имеется несколько кинотеатров: Зея, Октябрь, Благо- вещенск, Харбин, Амур, Восток, Кактус. Каждый из них работает в определен- ный день недели, который задается номером. В кинотеатрах идут фильмы: Му- мия, Гарри Потер, Елки, Трансформеры, Люди в черном, Железный человек, Турист. Вводится номер дня недели и определяется кинотеатр, работающий в этот день. Затем из списка фильмов, идущих в кинотеатре, выбирается фильм и выводится время киносеансов. Определим переменные задачи: промежуточная переменная: n (индекс выбранной строки): integer. Для решения задачи расположим компоненты на форме (рис. 26). Рис. 26. 33 Свойства выбранных компонент: Form1 – Caption – Фильмы Edit1 – Text – пусто Edit2 – Text – пусто Label1 – Caption – Введите номер дня недели Label2 – Caption – Список Label3 – Caption – Время сеанса Button1 – Caption – Определить Button2 – Caption – Очистить RadioGroup1 – Items – Зея, Октябрь, Благовещенск, Харбин, Амур, Вос- ток, Кактус Процедуры для определения кинотеатра и для определения времени сеан- са будут иметь вид: procedure TForm1.Button1Click(); var n:integer; begin n:=strtoint(edit1.text); case n of 1: RadioGroup1.ItemIndex:=1; 2: RadioGroup1.ItemIndex:=0; 3: RadioGroup1.ItemIndex:=4; 4: RadioGroup1.ItemIndex:=6; 5: RadioGroup1.ItemIndex:=2; 6: RadioGroup1.ItemIndex:=5; 7: RadioGroup1.ItemIndex:=3 else showmessage('Введите номер дня недели от 1 до 7'); end; end; procedure TForm1.ListBox1Click(); begin case ListBox1.ItemIndex of 0: edit2.text:='12-00, 16-00, 20-00'; 1: edit2.text:='12-30, 16-30, 20-30'; 2: edit2.text:='11-00, 15-00, 21-00'; 3: edit2.text:='11-30, 15-30, 21-30'; 4: edit2.text:='12-00, 15-00, 22-00'; 5: edit2.text:='11-00, 17-00, 21-00'; 34 6: edit2.text:='12-00, 15-00, 21-30'; end; end; Задание 6. Самостоятельно записать процедуру для кнопки «Очистить». Задания для самостоятельного выполнения В ариа нт 1 1. Записать программу, которая по выбранному названию фигуры (тре- угольник, квадрат, ромб, прямоугольник и т.п.) выводит формулу, по ко- торой вычисляется площадь этой фигуры. 2. Имеется расписание приема врача: понедельник 8-00 – 10-00, вторник 11-00 – 13-00, среда 9-00 – 11-00, четверг 8-00 – 10-00, пятница 11-00 – 13-00, суббота 9-00 – 10-00, воскресенье выходной. Необходимо для ука- занного дня недели выдать информацию о часах приема врача. В ариа нт 2 1. Записать программу, которая на ввод времени суток выделяет соответ- ствующее пожелание доброго утра, доброго дня, доброго вечера и спо- койной ночи. 2. Пусть элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий элемент). Составить про- грамму, которая по выбранному номеру элемента запрашивала бы его со- ответствующее значение и вычисляла бы площадь круга. В ариа нт 3 1. Человек в течение своей жизни проходит несколько возрастных этапов. Требуется по введенному количеству лет определить возрастной проме- жуток для данного возраста. 2. Напишите программу стоимости телефонного разговора. Известно, что тариф днем, вечером и на выходных разный. Пользователь выбирает в списке время разговора и вводит количество минут, а на экране появляет- ся стоимость всего разговора. В ар и ант 4 1. Составьте программу стоимости услуг в парикмахерской. При выборе в списке вида услуг выводится ее стоимость. В программе учесть мужской и женский зал. 2. Написать программу, которая по введенному номеру месяца выделяет в списке название следующего за ним месяца. 35 В ариа нт 5 1. Составить программу подсчета стипендии в университете. Пользова- тель вводит количество студентов и в списке с радиокнопками выбирает категорию сдачи сессии: только с пятерками (М руб); только одна четвер- ка (Л руб); без троек (К руб); с тройками. В результате получает количе- ство денег, расходуемых на стипендию данной группы студентов. 2. Определить остаток от деления целой части значения выражения ln|x 2 +ab| на 7 и в зависимости от величины выделить в списке день недели с соответствующем номером. В ариа нт 6 1. Для каждой введенной цифры (0 – 9) выделить в списке соответствую- щее ей название на английском языке. 2. Оклад служащего составляет X рублей. Для выбранного района (цен- тральный, дальневосточный, северный) вычисляется з/плата. Выводится процентная надбавка (0%, 50%, 100%) и зарплата за месяц. В ариа нт 7 1. Напишите программу телепередач. Пользователь вводит время про- смотра, путем указания часа. В результате в списке выделяется соответст- вующие программы. 2. Средний ежеквартальный расход электроэнергии – P кВ/час. При этом: в 1 квартале расход на 15% выше среднего, во 2 и 4 квартах – на 5% выше среднего, в 3 квартале – на 8% ниже среднего. Вводится номер квартала. Выделяется корректирующий сезонный процент и вычисляется расход электроэнергии в данном квартале. В ариа нт 8 1. По введенному количеству лет вывести возможные виды кредита: до 1 года – экспресс-кредитование; до 5 лет – кредит на неотложные нужды; до 15 лет – ипотечное кредитование. Для предлагаемого кредита в Memo выводятся условия его получения. 2. Для суммы S в списке радиокнопок выбирается вид вклада («Пенсион- ный» – 17% годовых, «До востребования» – 3% годовых, «Молодежный» – 14% годовых и др.). Указать сумму вклада через один, два, три года с учетом начисляемых процентов. Суммы вкладов выводить в компонент Memo. 36 Лабораторная работа №5 Циклические структуры Цикломназывается многократно повторяемый участок вычислений. 1. Оператор цикла с параметром. Данный оператор используется, если надо выполнить некоторую после- довательность действий несколько раз, причем число повторений заранее из- вестно. Синтаксис: For параметр цикла:=мл. знач. to ст. знач. do For параметр цикла:=ст.. знач. downto мл. знач. do Если параметр возрастает, то между границами его значений ставится to, если убывает, то downto. нц для i от i1 до i2 тело цикла (последовательность действий) кц Действия: параметру цикла присваивается начальное значение (i1) и вы- полняется тело цикла, затем параметру цикла присваивается следующее значе- ние и вновь выполняется тело цикла и так до тех пор, пока не будет перебраны все значения параметра цикла (i2). 2. Оператор цикла с постусловием. Данный оператор используется в программе, если надо провести некото- рые повторяющиеся вычисления, однако число повторов заранее не известно и определяется самим ходом вычисления. Синтаксис: Repeat тело цикла Until условие; Действия: сначала выполняются операторы, потом проверяется условие. Если оно ложно, то снова выполняются операторы, и так до тех пор, при про- верке условие не примет значение True. запись оператора выбора на алгоритмическом языке Рис. 27. Рис. 28. 37 Рис. 29. 3. Оператор цикла с предусловием. Данный оператор, как и оператор Repeat, используется в программе, если надо провести некоторые повторяющиеся вычисления, однако число повторов заранее не известно и определяется самим ходом вычисления. Синтаксис: While условие Do тело цикла; нц пока условие тело цикла (последовательность действий) кц Действия: сначала проверяется условие, если оно истинно, то выполняет- ся тело цикла. Затем снова проверяется условие и т. д. Если условие ложно, то цикл завершается и выполняется оператор, стоящий непосредственно после цикла. Задание 1. Найти значение n! . Определим переменные задачи: входные данные: n: integer промежуточные переменные: i: integer – параметр элемента, изменяется на промежутке [1;n] с шагом 1. результат: p: real Задачу решим с использованием всех трех циклических структур. Распо- ложим компоненты на форме (рис. 30). Свойства выбранных компонент: Form1 – Caption – Факториал Label1 – Caption – Введите n Label2 – Caption – Значение факториала Button1 – Caption – С параметром Button2 – Caption – С предусловием Button3 – Caption – С постусловием запись оператора выбора на алгоритмическом языке Рис. 30. 38 Button4 – Caption – Очистить Edit1 – Text – пусто Edit2 – Text – пусто Edit3 – Text – пусто Edit4 – Text – пусто Запомните! При решении задач на циклические структуры первоначаль- ное значение суммы S=0, а произведения P=1. Процедуры и блок-схемы (рис. 31, 32, 33) для вычисления значения фак- ториала будет иметь вид: Цикл с параметром: |