- •Д.С.Ситкин
- •Информатика.
- •Программированиев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
Пример4.1
Разработаемпроектыдлявычислениязначениявыражения
za
x25
a2
y25
(y2)25
,
гдеxиyпеременные,aконстанта
с использованием подпрограмм,помещённых
всобственный(пользовательский)
модуль.
В предыдущей работе уже были разработаны функция и проце-дураdrobдля вычисления значения типового выражения. Здесь оста-ётся только создать свой модуль и переместить функцию и процедуруиз проектов в пользовательский модуль в соответствии с его структу-рой. Затем наш модуль необходимо подключить к обоим проектам,чтобы они смогли воспользоваться подпрограммами, как и раньше, ноужерасположеннымивмодуле.Посколькуобеподпрограммыбудут
располагатьсяводноммодуле,ихименадолжныбытьразличны.Представимдвавариантапользовательскогомодуля
UNITMy_Unit; INTERFACE functiondrob1(t:real):real;proceduredrob(t:real;vard:real);IMPLEMENTATION proceduredrob(t:real;vard:real); constc=5;vart1, t2:real;begin t1:=sqr(t)+c;t2:=sqrt(abs(t))+c;d:=t1/t2; end; functiondrob1(t:real):real; constc=5;vart1, t2:real;begint1:=sqr(t)+c; t2:=sqrt(abs(t))+c;drob1:=t1/t2; end; END. |
UNITMy_Unit; INTERFACE consta=3; varx,y,z,z1,z2,z3:real; functiondrob1(t:real):real;proceduredrob(t:real;vard:real);IMPLEMENTATION constc=5; vart1,t2:real; proceduredrob(t:real;vard:real); begin t1:=sqr(t)+c;t2:=sqrt(abs(t))+c;d:=t1/t2; end; functiondrob1(t:real):real; begin t1:=sqr(t)+c;t2:=sqrt(abs(t))+c;drob1:=t1/t2; end; END. |
В первом варианте (слева) подпрограммы перенесены в разделреализации модуля, а их заголовки продублированы в разделе описа-ний,чтобыподпрограммыбылидоступныизвнешней среды.
Во втором вариантето же, плюс перенесены в раздел описа-ний модуля константаaи переменныеx,y,zи др., что даёт возмож-ность не объявлять одно и то же дважды в проектах, а один раз в мо-дуле. Кроме того, в разделе реализации объявлена константаcи пе-ременныеt1иt2теперьвнеподпрограммиоднократно.Онибудут,как и раньше, «видны» обеим нашим подпрограммам, но «не видны»тем, кто подключит этот модуль, т.к. объявлены в разделе реализации(для внутренних нужд модуля). А вот константаaи переменныеx,y,zобъявленывразделеописанийи«видны»ивнутри,ивнемодуля.
Задание
Создать пользовательский модуль и перенести в него пользова-тельскиеподпрограммыизпредыдущейработы.Подключитьмодулькобоимпроектам.
Содержаниеотчёта
цельработыизадание(сисходнымвыражением);
текстпользовательскогомодуля;
текстымодулейпроектов;
примерработыприложенийсуказаниемкомпонентовформы;
выводыпоработе.
Контрольныевопросы
Скакойцельювпрограммированиииспользуютмодули?
Чтотакоемодуль,каковаихклассификация?
Каковаструктурамодуля,каквключитьмодульвпроект?
Чемопределяетсяобластьвидимостипеременнойвмодуле?
Вкакомслучаемодульбудетсодержатьтолькоразделописаний?
Лабораторнаяработа№5
АЛГОРИТМЫВЕТВЛЕНИЙ
Цель работыприобретение умений разработки и программнойреализацииразветвляющихся алгоритмов.
Разветвляющийся алгоритмалгоритм, в котором на опреде-лённом этапе выбор очередного выполняемого действия производит-сяврезультате анализаусловия.
В программированииусловиеэто переменная или выражениелогического типа, т.е. такие, которые могут принимать одно из двухвозможных значений:True(истина) илиFalse(ложь). Обычно логи-ческоевыражениестроитсяизлогическихпеременных,операцийсравнения, логических и арифметических операций. Основные логи-ческие операции и результаты их выполнения над логическими аргу-ментами(операндами) представлены втабл.5.1.
Таблица5.1
Таблицаистинностидляосновныхлогическихопераций
-
Логические
операнды
Логическиеоперации
A
B
Логическоеотрицание
notA
Логическоеумножение(и)
AandB
Логическоесло-жение(или)
AorB
False
False
True
False
False
False
True
True
False
True
True
False
False
False
True
True
True
False
True
True
Логическиеоперациимогутвыполнятьсятольконадоперан-дами (переменными или выражениями) логического типа. Результатоперации–значениеTrueилиFalse.Операцияnotявляетсяодно-
местной и может выполняться только над одним операндом. Опера-цииandиorвыполняются минимум над двумя операндами, но могутбыть распространены на несколько операндов. В этом случае резуль-тат операцииandпринимает значениеTrue, если все операнды при-няли значенияTrue, иFalseво всех остальных случаях. Результатоперацииorпринимает значениеTrue, если хотя бы один из операн-довпринялзначениеTrue.
Коперациям(отношениям)сравненияотносят:меньше(<);меньше или равно (<=); больше (>); больше или равно (>=); равно (=);не равно (< >). Двойные неравенства записываются с использованиемлогическихопераций,например,(x>1)and(x<2).
Логические операции имеют следующий приоритет: в первуюочередь выполняетсяnot,затемandи в последнюю очередьor.Операции сравнения имеют низший приоритет по сравнению с логи-ческими и арифметическими операциями. Порядок выполнения опе-рацийможноустанавливатьспомощьюскобок.
Для логических переменных и выражений остаётся справедли-войконструкцияоператораприсваивания,например,a:=x>3;b:=(x>y)and(y<=0);c:=aorb;. Сначала вычисляется значение (TrueилиFalse) выражения, стоящего справа, а затем оно присваиваетсяпеременнойслева.Логическиепеременные,какидругие,должныбытьобъявленывразделе описаний
vara,b,c:boolean;x,y:real;
Впрограммированиивозможностьреализоватьразветвляю-щийся алгоритм обеспечивается условными операторами и операто-рамивыбора.
