- •Д.С.Ситкин
- •Информатика.
- •Программированиевdelphi
- •Лабораторныйпрактикум
- •Содержание
- •Введение
- •Основныепонятияпрограммирования
- •Этапыпрограммирования
- •Средаdelphi.Созданиепростейшегопроекта
- •Формаиеёсвойства
- •Компонентыформыиихсвойства
- •КомпонентLabeledEdit
- •Событиеипроцедураобработкисобытия
- •Пример1.1
- •Компиляцияизапускпроектанаисполнение
- •Структураисохранениепроекта
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Линейныйалгоритм
- •Типыданных
- •Константыипеременные
- •Арифметическиеоперации
- •Правилазаписитиповыхдействий
- •Структурапроцедурыобработкисобытия
- •Пример2.1
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Подпрограммы
- •Классификацияиструктураподпрограмм
- •Механизмработыподпрограммыиобменапараметрами
- •Пример3.1
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Структурамодуля
- •Созданиеиподключениемодуля
- •Пример4.1
- •Условныйоператор.Неполнаяформа
- •Условныйоператор.Полнаяформа
- •IfусловиеthenоператорS1elseоператорS2
- •Пример5.1
- •Пример5.2
- •Операторвыбора
- •Пример5.3
- •Содержаниеотчёта
- •Контрольныевопросы
- •Контрольсинтаксисавводимыхданных
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Алгоритмыповторений
- •Операторцикласпредварительнымусловием
- •Пример7.1
- •Операторцикласпараметром(сосчётчиком)
- •Пример7.2
- •Пример7.3
- •Операторцикласпоследующимусловием
- •Пример7.4
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Массивы
- •Объявлениемассива
- •Обработкамассивов
- •Пример8.1
- •Динамическиемассивы
- •Подпрограммасоткрытымпараметром-массивом
- •Пример8.2
- •Целесообразностьвыделенияпамятиподмассивы
- •Контрольсинтаксисаэлементовмассива
- •Задание
- •Обработкамногомерныхмассивов
- •Пример9.1
- •КомпонентStringGrid
- •Пример9.2
- •Сортировкамассивов
- •Пример9.3
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Внешниефайлы
- •Физическиеилогическиефайлы
- •Классификациялогическихфайлов
- •Процедурыифункцииобработкифайлов
- •Пример 10.1
- •КомпонентыOpenDialog иSaveDialog
- •Пример 10.2
- •Пример 10.3
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Олабораторнойработе
- •Информатика. Программированиев delphi
Задание
Дополнить проекты предыдущей лабораторной работы кон-струкциямиконтроля синтаксисавводимых данных.
Содержаниеотчёта
цельработыиполнаяформулировказадания;
блок-схемыалгоритмовконструкцийконтролясинтаксиса;
текстымодулейдополненныхпроектов;
примеры работы приложений с указанием компонентов приналичиивполяхвводаданныхссинтаксическимиошибками;
выводыпоработе.
Последующиепроектыдолжнысодержатьконструкциикон-троля вводимых данных предполагаемым пользователем, обеспечи-вающихкорректнуюработуприложенийприлюбыхданныхввода.
Контрольныевопросы
Скакойцельюследуетконтролироватьвводимыеданные?
Почему, помимо контроля вводимого с клавиатуры символа на до-пустимость, следует предусматривать и другой контроль, например,дополнятьимпроцедурусвычислениямиилиблокироватькнопку?
По какой причине конструкции контроля целесообразно оформлятьв виде собственных (пользовательских) подпрограмм? Почему ещёцелесообразнееэтиподпрограммыпоместитьвсобственныймодуль?
Лабораторнаяработа№7
Алгоритмыповторений
Цель работыприобретение умений разработки и программнойреализациициклических алгоритмов.
Повторяющийся(циклический)алгоритмалгоритм, в которомрезультат достигается многократным выполнением одних и тех жедействий. Однократный проход таких действий называютитерацией.В программировании возможность реализовать циклические алгорит-мыобеспечивается операторами цикла.
Операторцикласпредварительнымусловием
Этоуниверсальныйоператорцикла,онимеетследующийвид
whileусловиеdoоператорS
гдеwhileиdoслужебные слова;условиепеременная или выра-жение логического типа;операторSоператор, называемый теломцикла.Блок-схемаалгоритма,реализуемогооператоромциклас
предусловием,представленанарис.7.1.Перед
операторS
условиеда
Рис.7.1
нет
каждойитерациейопределяетсязначение
условия,
пока оно принимает
значениеTrue,выполняетсяоператорS.
ОператорSможетбыть
составным. Т.е. если необходимо, чтобы
вциклевыполнялосьнесколькооператоров,тоих
необходимо заключить в операторные
скоб-киbeginиend.Еслиусловиепринимает
значениеFalseссамогоначала,тотелоцикланевыполнитсяниразу.
Пример7.1
Разработаемалгоритмвычислениязначенийфункции
x2,
y
x,
x0
x0
дляаргументаxнапромежуткеотaдоbсшагомhиреализуемего.
Послевводалевойиправой
границдиапазонаaиbишагаприращенияh, аргументxдолженпоследовательнопринимать зна-
чения:a,a+h,a+2h,…,b.Длякаждого
из этих значений вычис-ляется значение
функцииyв за-висимости
от условияx0
и, вме-сте с
соответствующим ему
зна-чениемаргументаx,выводитсянакаждойитерации.Послеэтого
значение аргументаxувеличива-ется на шагhи происходит воз-вращениекначалуцикла.Если
значениеxнепревысилоb,тоосуществляетсяследующаяите-рация, и всё повторяется, покаxнепревыситb.Довходавцикл
следуетзадатьначальноезначе-ниеаргументаx=a,откоторогов
цикле начнёт увеличиваться значениеx. Блок-схема алгоритма пред-ставленанарис.7.2,апример работыприложениянарис.7.3.
Реализуем разработанный алгоритм в проекте. Для ввода значе-нийa,bиhвынесем на форму три компонентаEdit, а для пояснений книмтриLabel. Для вывода результатов разместим на форме четвёр-тый компонентLabel, для которого следует установить значениеTrueсвойстваAutoSize(автоподбор размера по содержимому), т.к. заранеенеизвестно, сколько значений будет выведено в компонент, посколькуэто будет определяться введёнными пользователем размерами диапа-зонаишага.РасчётивыводзначенийсвяжемссобытиемButton1Click.
procedureTForm1.Button1Click(Sender:TObject);
vara,b,h,x,y:real;
begin
a:=StrToFloat(Edit1.Text);b:=StrToFloat(Edit2.Text);h:=StrToFloat(Edit3.Text);x:=a; //начальное значениехwhilex<=bdo
begin//началотелацикла
ifx<=0theny:=sqr(x)elsey:=x;Label4.Caption:=Label4.Caption+#13+
Рис.7.3
+'x=' +FloatToStr(x) +#9+'y='+FloatToStr(y);
вывод вLabelзначений предыдущей итерации + перевод строки и добавлениезначенийхиyтекущейитерации,т.е. накоплениетаблицыс каждойитерацией
x:=x+h;//увеличениезначенияхнашаг
end;//конецтелацикла
end;//конецпроцедуры
Вслучаевводапользователемh0илиabциклнесможетза-вершитьсяпроизойдёт«зацикливание»,чтонужнопредотвратить.
