lektsii_po_infe
.pdf
|
|
31 |
8.4.8. Операцииввода |
-вывода |
|
Операциирассмотвышегруппрендлянобрыхазначеныданныхвботки |
|
|
центральнойчастиЭВМОП(+процессор)В.силуобщиобрнципхданныхботкив |
в |
|
центральнойчастиЭВМэтиоперре полцсхожимизуютсясхемам. |
|
|
Операцииввода |
-вывопредляаназначеныпересылкиданныхмеждуосновной |
|
памятьюивнешнимиустройствами.Таккакввод |
-выводорганизуетсяразныхЭВМпо |
|
разному,реализацияэтихоперацийсу |
щестзавоттипаиситенноЭВМ. |
|
Прицентрализованномуправленииспециальныхкомандввода |
-выводаможетне |
|
бытьвообще.Закаждымвнешнимустройствомзакрепляетсяодилинесколькоячеек |
|
|
памяти,черезкоторыеорганизуется |
обмендан.Вэтослучаеыобми н |
ожетбы ь |
высполненмощью |
операцийпересылки. |
|
8.5. Систпрерыванийма
8.5.1. Понятиепрерывания
Вовремявыпрограммыолнениямогутвозникатьособыеситуации, |
|
требующие |
|
немедленнреакцииЭВМ.Исттакихоситуацийчникоммогут |
|
|
быть: |
1Аппаратура. |
центральнойчастиЭВМвнут( прерыванияенние)Например. , |
|
|
обнаружениеошибкиприпередачеданныхм основнойждупамятьюипроцессором. |
|
|
|
2Ап. паератураиферийнойчастиЭВМвнешние( прерывания)Например. , |
|
|
|
нажатиеклавиши,нажатикнопкиатуремыши |
|
|
т.п. |
3Програ. ,которуювданнммаоментвыйполняетЭВМпрограммные( |
|
|
|
прерывания)О. ситуацииобыеэтомслучаеогутвозникатьпри |
|
|
“нештатном”режиме |
работыпрограммыилижесоздаватьсяпрограммой |
|
|
преднамеренно.Примером |
“нештатной”работыпрограммыможе |
тбыть попыткаделениянаноль,извлечение |
||
квадракорняизтрицательногоч .псла.Преднамеренноэтаситуациясоздается |
|
|
|
спомкомандвызоващьюпрерывания. |
|
|
|
РеакцияЭВМнаособыеситуациизаключаевпр выполненияостсяановке |
|
|
|
текущейпрограммыипе |
реходеквыполнениюспециальной |
|
программыобработкиособой |
ситуации.Послезавепршенияограммы |
|
обработкиЭВМвозвращаетсявыполнению |
|
текущейпрограммы.Этот |
процессназываетсяпрерываниемпрограм,аппаратноы |
|
|
программные средстваобрабоособыхситуки |
аций – системойпрерываний. |
||
Программа,выполнявшаясядовозникнособситуации,называетсявенй |
|
|
|
прерываемойпрог, аммойобрабограммаособойситуациики |
|
|
– прерывающей. |
Процеособойобрабоситпруациикиведен |
|
наРис.1 |
1. |
32
|
Рис. 11. |
|
Привозникновени |
иособойситуацформируетсяоповещениягнал, |
|
называемыйзапросомпреры.Запросдлявнутреннихание |
внешнихпрерываний |
|
формируаппасреа,адтспрограммныхнымилятвами |
– прогсредствааммны. ми |
|
РеакцияЭВМнаособыеситуациидлянекоторыхист |
очниковможет |
бытьоднойи |
тойже.Другимисловаисточникам,эти соответствует |
однаитажеобрабатывающая |
|
программа. |
|
|
Множеособыхст,обслуживаемыхоянийвооднойтойжепрограммой, |
|
|
образуеткласспрерывания.Каждомукласспрерывназнанийчается |
|
омер,называемый |
кодомпрерывания.Кододнознопределяет,кияобрабатывающаячнокая |
|
|
программадолжнаобрабатыватьвозникшуюособуюситуацию. |
|
|
Количествоисточниковможетдосотен,игатьколичеклассовтво |
значительно |
|
меньше,какправило, бол |
ьшенескольдесятков. их |
|
Типичныклассапрерыванийявляютсями: |
|
|
•Прерыванияотсхемконтроля;
•ПрерыванотпультауправлеЭВМидругянустройствешнихях;
• |
Прерыванияотсистемыввода |
-вывода; |
• |
Прерывприобрпрограммщенииниякзапрещеннымдля |
использования |
|
ресурсам; |
|
•Прогпрерыванияаммные. МногиеЭВМдопрерываниеускаютпрерывающейпрограммы.Количество
программ,кот последователрыегутпредругаыват, ьно |
называетсяглубиной |
прерывания. |
|
8.5.2. Выделениезапросанапрерывание
Одновременномвозникнутьжетсразунескособыхситуацийлько.В |
этомслучае |
одноврбудсуществмн нносколькозапроснаватьв |
прерывание. |
Последовательнобрз боткипрзависитважносзникшейсовстьсит.Дляуации |
|
этогокаждомукласспрерывназнанийчае |
тсвойяприоритет. |
Существуетдвеосновнвыделениясхемзапросанаибольшим |
приоритетом: |
•Опросисточниковпрерывания;
•Вектопре.рноеывание
Припервомспособезапросынапрерываниеувсехистоднотипныч,чтонеиков |
|
|
позволяопределитьсразукод |
рерывания.Припоявлениилюбогозапрформируетсяса |
|
общийсигналпрерывания.Этотсигнал |
|
инициируисточниковопроспрерываний |
соответствихприор.Толькопослеивыявлениятетомвиновника“”удается |
|
|
сформироватькод |
прерыванияопредпрограммулить |
гообработки. |
|
|
|
33 |
Спростособвреализации,нотребумноговрнаопростмени.Пр вменяется |
|
||
основноммикро |
-ЭВМпринебольшколичествеисточниковпрерыванийм. |
|
|
Привторспособезапроскаждогомисточноситдивидуальныйика |
характер. |
||
Каждыйисточникформир |
|
уетзапросанапрерывание |
устанавливаетсвкойд |
прерывания.Поскообработкилькуграммы |
прерывкаждогоклхранитсянияссав |
||
заранееоговоренномсте |
|
основнойпамяти,частокодпрерыванияпредставляетсобой |
|
адрес программыобработки.Дляреализаци |
иэтогоспособанужны |
дополнительные |
|
аппаратныесредства,приведенныенаРис. |
12. |
|
ЗапросызаносятврегизапросовнапрерывтряРЗП()Число. аниезрядов |
Рис. 12. |
РЗП |
|
|
|||
соответствуетчислу |
классовпрерыв.Каждыйклассимеетстрогонийза |
|
крепленныйза |
ним разряд РЗП.Чтобывызватьпрерываниесзаданнымклассом |
|
требуетсяустановить |
|
соответствующийразрядрегистра1. |
|
|
|
Некотзапросыможнопроигнорироватьрые |
– замаскировать.Маскапрерываний |
||
хранитсявспециальномрегимасокРМ)(тре. |
|
ОдноименныеразрядыРЗП |
и РМ |
соединеныпосхемеИ.Маустанавлкаспецкомандаиальныв.Схемаетсями |
|
|
|
выделениязапросавыявлясамуюлевуюн замаскированнуютединицурегистре |
|
|
заприформобщийсовпрругналеиегорыванияткКод. определяетсяпономеру разрядаРЗП.
8.5.3. Обработкапрерывания
|
Оснэтапыовнбработкиыделенногопрербылипрваниянаведены |
|
Рис.1. |
||
Уточнимсодержание |
|
некоторыхизних. |
|
|
|
|
Любаявыполняепрограммамоноисполаярегистрыпроцессораьзуетно. |
|
|
||
Содержимрегистровхарактеризуетсостояниеыполня |
|
емойпрограммы.Без |
сохранения |
||
состояниярегистроввыполняепрограммыозвраткнейможетй |
|
|
оказаться |
||
невозможным. |
Поэтпрпереходацессмукпрерывающейпрограммеивозвратк |
|
|
||
прерванндолженсостиз ятьй |
|
следующихэтапов: |
|
|
|
• |
Сохранениерегистров |
процессора |
впамятизапоминание( текущегосостояния |
|
|
|
прерываемой программы) |
|
|
||
• |
Загрузкаврегисостпрерывающейоянияпрограммыеевыполнение; |
|
|
||
• |
Загрузкаврегистрыпроцессоразапомненногосостоянияпрерванной |
|
программы |
||
|
(восстановлениесостоянияпрог) раммыодолже |
ниеее выполнения. |
|
||
|
Обычносохранениевосстанрегистровениезлнпрерывающуюгается |
|
|
программу.Еслитакаявозможннепреду,сосхранениемтьвосстановлениетрена
34
регистровдолжнавыполнятьсамапрерываемаяпрограмма.НаРис. |
13показано |
взаимодействиепроцессавыпроголненияраммыбработкицессапрерывания. |
|
Рис. 13.
9Жизненный. циклпрограммы
9Понятие.1.парадигмыпрограммирования
Длярешениязадачиобрданныхразрабатываетсяботкиспользуетсяпрограмма. |
|
||
Пропграммаеделяет |
|
пердеченьйствийнадданными, |
котдовыполнитьлжре |
исподлярешениянительпостза.Недачивлепретендполнанойдетализациюу,я |
|
||
отметимосновныхучастнрешениязадачиихко: вли |
|
|
|
1Заказчик. |
– |
определяеттребованиякразрабатываемойпрограмме. |
Различают |
нефункциональныетребования. |
|
||
Функциональныетребованияпредставляютсобойпереченьвозможностей, |
|
||
предоставпрограммойпользовяемыхешениидачтелю |
|
(функциональность |
|
программы)К.нефункциональнымтребованотнос: тсяям |
оставвходныхи ыходных |
||
данных,способполучевходныхия |
|
данныхотпользователяиспособвыдачивыходных |
|
данныхпользов,ограничениявртвымялюпрогролнения,диапзнммыачезоний |
|
||
данных,точностьпреданныхи.павления.Зафиксированныйустанов |
ленным |
||
способомперечетребудемованийазыватьспецификпрогр. аммыцией |
|
|
|
|
|
35 |
2Проектировщик. |
– определяетструктуразрабатываемойпрограммыу, |
|
||
распределфункциональностимечастямиждуниепрограммы |
|
|
ихвзаимодействиепо |
|
управлеиобменуда. нымиию |
|
|
|
|
3Раз. |
работчик – |
опредспособеализацииляеттребфункциональностиемойв |
|
|
каждойизчастейпрограммыиразрабатываеткодпрограммынаязыке,дос упном |
|
|
||
исполнителю. |
|
|
|
|
4Пользователь. |
– применяетразработанну |
ю |
программупоназначениюдля |
|
получениярезультатовобраб |
откиданных. |
|
|
|
Приразработкеспецификацвыделяетсячастьреальногомираи |
|
– предметная |
||
облаРи(.1сть |
4)Предме. областьвключаетольконаяте |
|
предмеипоня,которыеия |
|
имеютотношениекрешаемойзадаче. |
|
|
|
|
|
|
Рис. 14. |
|
|
Длявыделеннойпредметнойобласти |
составляетсяееформализованноеописание |
– |
|||
модельпредметнойобласти.Мод областидметнойль |
|
иопределенспецифиекации |
|
||
программывыполняется,какправило, |
|
системныманалитикомсогласовывается |
|
||
заказчикомпроекти.Модреовщикомобластидметнойль, |
|
отражвзгляднанееющую |
|
||
заказчика, |
называютлогическмоделью,представлениепрограммйточки |
|
зрения |
||
заказчиканазываютпрагматикойпрограммы. |
|
|
|
|
|
Очевидно,чтодлязаказчикаестествявляетсяж исполаниеннымд яьзовать |
|
|
|||
построениялогическоймодели |
|
онятаппаратийный |
средстваформ,принятыелизации |
|
|
впредметнойобласти. |
|
|
|
|
|
Сдругойстороны,разработчикдолженопрсемантикуделитьпрограммы. |
|
|
|||
Семантикапрограммы |
- |
этопредставлениеопрограммточки |
зренияЭВМ,которая |
|
|
будетеевыполнять.Другимислова |
|
ми,разработчик |
долженсформироватьфизическую |
|
|
модельпредметнойобласти,выраженнуюиспользованиемпонятийсредств |
|
|
|||
формализации,доступных |
|
длявосприятияЭВМ. |
|
|
|
ДляаппаратныхсредствЭВМнепосредственнодоступнапрогр, мма |
выраженная |
||||
терминахмашинны |
хкоманд.Разработчикдляопределенсемантпрограммыможетикия |
|
|
||
использотакназыязыкиваемыеть |
|
высокогоуровняЯВУ()Понятийный. аппаратЯВУ |
|
||
можетсуществеотличатьсяпонаппятийнномараташинныхко.Примандго |
|
|
|
||
использЯВУЭВМдобытьлжнаваии |
|
снабженакомплексомпрогр,едстваммных |
|
||
которыеобеспечиваютвыполнениенаЭВМпрограмм,написанных |
|
ЯВУ.Аппаратные |
|||
средстваЭВМпрогсредствааммнывыполнениями |
|
прогбсредуазуютмм |
|
||
исполненияпрограмм. |
|
|
|
|
|
Вдальнейшемпрасисмотренииемантикп |
|
рограммыифизической |
модели |
предметнойоблабудемисходитьтиизтого,чтоонипределяюразработчикомна ся языкевысокогоуровня.
Понятийныйаппарат,исподральзмоделейработкиуемыйпредметнойобласти, назывпарпрограммированияютдигмой.
|
|
36 |
Наиболее распространеннымипарадигмаявляютсямирования |
||
процедурно-ориентирпрограммированиеванноебъектно |
-ориентированное |
|
программирование.Существуютдругиепарадигмы |
|
программирования,частности |
логическоепрограммированиефункцион льное |
ммирование.Рассмотрениеэтих |
|
парадигмвыходитза |
рамданногокурсаи. |
|
Рассмотримоснп ,вныележащиенятияосновепроцедурно |
-ориентированного |
|
программирования. |
|
|
Восновепарадигмыл понятийныйжитаппа,отрапринципыжающий |
|
|
логическойорганизацииЭВМ |
|
лассическойархитектуры.Предметнаяобласть |
рассматривкакпроцессвоздействнвходаетсяданцельюныеипреобразованиях |
|
|
ввыходдан. ные |
|
|
Дляпредставллогическоймоделиспользуютнграфичеяскиея |
диаграммы, |
|
дополненнописаниемтекстов. ым |
|
Вло гическоймоделиопределяются: |
•Входныеданные
•Источникивходда ных
•Выходнданныее
•Потребителивыходданных
•Данные,подлдолговременномужащиехранениюнакопители( данных)
•Процпреобразованияссывходда ныхданодные
Структурнопрогр |
аммапредставлясобойнаборпроцетдур |
– подпрограмм. |
Взаимодействиеподпорганизованоограммпоиерархическому |
принципу.Выполнение |
|
программыначинаетсяглавнойподпрограммы. |
|
|
Выполняющаясяподпрограммаможетвызватьподчиненнуюподпрограмму. |
|
|
Выполнение подпрограммыиостдозавершениянавливается |
вызваннойподпрограммы |
|
ивозвратаизнее.Программасчитаетсявыполненнойпослезавглавнойршения |
|
|
подпрограммы. |
|
|
9Жизненный.2. циклпрограммногообеспечения
|
Однимизосновпонятийполагающтехнологиразраб их |
откипрограммного |
обеспечявляетсяпонятиежизннияциклаЖЦ()нногоПод. |
жизненнымцикломПО |
|
понимаетсясовокупнопроцес,связанныхпоследовательнымтьизменением |
|
|
состоянформированияПОот сходтребованийк емуыхдоокончанияего |
|
|
эксплуатации. |
|
|
|
ВходежизненногоциклаПОпроходитчерез |
|
• |
анализпредметнойобласти, |
|
• |
сбортребований, |
|
• |
проектирование, |
|
• |
кодирование, |
|
• |
тестирование, |
|
• |
сопровождение |
|
• идругиевидыдеятельности. |
|
|
|
Кажвипредставляетыйсобойнабордействий,выполнядлярешениямых |
|
одной задачиилигруппытесносвязанныхзадр разработкимкахчподдержки |
|
|
эксплуатацииПО. |
|
|
|
Пример.Найтивремя,накотороеопаздываетилиприезжаетраньшепоезд. |
|
|
1) Анализпредметнойобласти. |
|
|
Исходдан:Датаприбытияныепоездарасписанию,времяприбытия |
оезда |
порасписан,датафактприбытияпоездаческогою,времяфактическогоприбытия |
|
|
поезда. |
|
Результат: 1Поезд. приходитвовремя
начало да
37
вводдатыпорасписанию
|
2П. опаздываетезд,времяопоздания. |
|
|
||
|
3Поезд. приходитраньше,время,накотпопездроераньшеиходит. |
да |
|
||
2) |
|
|
неправильно |
|
|
Сбортребований. |
|
|
|||
|
Датадолжнабытьпредставвидедвухц чиселлыхена |
|
– дняимесяцадень( |
||
долженбытьвдиапазонеотдо031,месяцдолженбытьвдиапазонеот0до12),время |
|
|
|||
|
|
ввод времени порасписанию |
|
||
должнобытьпредставвидедвухцчиселыхено |
|
– часовиминутчасы(должныбыть |
|||
вдиапазонеот |
0до23,минутыдолжныбытьвдиапазонеотдо059). |
|
|||
|
|
|
неправильно |
|
|
|
Результатдолженбытьпредставленследующимобразом: |
|
|
||
|
Еслипоездприходитвовремя,товыводитсятекстоваястрокаПоездприходит« |
|
|||
вовремя». |
ввод фактическойдаты |
|
|
||
|
Еслипоездпаздывает,товыводитсятексстрП«оваякапезд |
|
аздывает»идва |
||
целыхчислапервоечисло |
|
– |
количествочасов,второечисло |
– количесмину,на тво |
|
котороеопаздываетпоезд. |
неправильно |
|
|
||
|
|
|
|||
|
Еслипоездприходитраньше,товыводитсякстоваястрокаПоезд«приходит |
|
|||
|
|
ввод фактическоговремени |
– количество часов,второечисло |
– количество |
|
раньше»идвацелыхчислапервоечисло |
|
||||
минут,накотпприходитездыераньше. |
|
|
|
||
3) |
Проектирование |
|
|
||
|
|
|
неправильно |
|
|
I
0 - времяпорасписанию |
+время |
delta=1440 - времяпорасписаниюПоезд приходит+время |
||
II |
нетdays_s=кол -воднейвдатепорасписаниюдатыодконецнаковые |
да |
Поездdelta=0 |
|
кое позже |
|
|
времяфактическое |
|
days_f=кол -воднейвфактичдатеской |
фактическое |
вовремя |
||
|
|
опаздывает |
||
|
|
|
|
38 |
|
Поезд приходит |
delta<0 |
|
|
|
позже |
|
Поезд |
|
|
опаздывает |
|
||
|
|
|
||
|
|
|
нет |
|
|
|
нет |
|
да |
|
|
|
|
|
|
|
|
да |
|
|
|
II |
|
|
|
|
days_s<day |
|
|
|
нет |
|
да |
|
4) Кодирование
#include <iostream> using namespace std;
void main()
{
int hs,ms,d1,m1;//времяидатапо списанию int hf,mf,d2,m2; //времяидатафактические //ввод данных
39
cout<<"Enter schedule date\n"; do
{
cout<<"day:"; cin>>d1;
}
while (d1<0||d1>31); do
{
cout<<"month:"; cin>>m1;
}
while (m1<0||m1>12); cout<<"Enter schedule time\n"; do
{
cout<<"hours:"; cin>>hs;
}
while (hs<0||hs>23); do
{
cout<<"minutes:"; cin>>ms;
}
while (ms<0||ms>59);
cout<<"Enter fact date\n"; do
{
cout<<"day:"; cin>>d2;
}
while (d2<0||d2>31); do
{
cout<<"month:"; cin>>m2;
}
while (m2<0||m2>12); cout<<"Enter fact time\n"; do
{
cout<<"hours:"; cin>>hf;
}
while (hf<0||hf>23); do
{
cout<<"minutes:"; cin>>mf;
}
while (mf<0||mf>59);
//проверка даты int pr;
if (m1==m2&&d1==d2) pr=1;//датаодинаковая
else
pr=2;//разные даты
int delta;
if(pr==1) //датыодинаковые
{
int temp_s=hs*60+ms;//времяминутах int temp_f=hf*60+mf; delta=temp_s-temp_f;
if (delta==0) cout<<"Comes under the schedule\n"; else if (delta<0)
cout<<"is late\ndelta="<<(-delta/60)<<"h"<<(-delta%60)<<"m\n"; else
40
cout<<"Comes earlier\ndelta="<<(delta/60)<<"h"<<(delta%60)<<"m\n";
}
if(pr==2) //даты разные
{
int days_s=(m1-1)*31+d1;//количестводнейдатепорасписанию int days_f=(m2-1)*31+d2;//количесднейвфактичдатвоеской if(days_s<days_f)//дата расписанменьшефактическойдатыя
{
delta=(1440-(hs*60+ms))+(hf*60)+mf;
cout<<"is late\ndelta="<<(delta/60)<<"h"<<(delta%60)<<"m\n";
}
if(days_s>days_f)//датарасписанбольшефактическойдатыя
{
delta=(1440-(hf*60+mf))+(hs*60)+ms;
cout<<"Comes earlier\ndelta="<<(delta/60)<<"h"<<(delta%60)<<"m\n";
}
}
}
5) Тестирование Привыпрограммыолнениимогутвозникнутьошибкитипов3:
•синтаксические – испрнэтапекомпилвляются; ции
• ошибкиисполнпрограммыд(еление0,логарифмия |
|
отрицательногочисла |
т.п.) – исправляютсяпривыпрограммыолнении; |
|
|
• семантическиелогические( )ошибки |
– появляютсяиз |
-занеправильнопонятой |
задачи,неправисоставленногогоритмаьно. |
|
|
Чтобыустранэтиошпрограммаибкитьдолжнабытьвыполнена |
|
котором |
наборетестов.Цельпроцессатестирования |
– определениеналичияошибки,нахождение |
|
местаошибки,еепр соответствующиечиныизмененияпрограммы |
|
– исправление.Тест |
– этонаборисходан, котоляныхзаранизвыхестзультате.Твыявившиестн |
|
й |
ошибкусчитаетсяуспешным.Отладкапрогрзака,когдаммынчиваетсядостаточное |
|
|
количествотестоввыполнилнеуспешно,т..пр нанихграммасьвыдалаправильные результаты.
Дляопределендостаточнколичестватестсуществуетядвагоподхода.При первом подхпрорассградемкакчемаат«ящикр»,ныйиваетсякотопередаютый исходданполучаютныерезультаты.Устройствосамогоящиканеизвестно.Приэтом подх,чтобыосуществдеполноетест,надоипрроватьпрограммуверитьнвсехие
входда,чтонных практическиневозможно.Поэтомувводятспециальныекритерии, котдополжнырые,каконечноекоезатьмножествотестовявляедосдлясяаточным прог.Ппервомаммыиподходечащевсегоисполедьзкритерииую: тсящие
1) тестировклассоввходан,т ныхие .е.набортестовдолжсоденржать поодномупредставителюкажклассаогоанных:
2) тестировклассоввыходда,ниеаборныхт должстовсоденржать данныедостаточныедляполученияодномупр дставителюизкаждогокласса выходдан. ных
Привторомпод ходепрограрассмкакбелыйма«атриваетсяящик»,длякоторого полноизвестноу .Пьюртейлноестпривоирэтподходемвзаканчиваетсяние послепроввспутей,ведущихркиотначалапрограммыкееконцу.Однипритаком подходеполноетестировани епрограмневоз,т.к.путеймвпрограммеыожносциклами бесконечнмножество.Притакподходеисполедьзкритерииую: тсящие
1) Тестированиеком.Нтестовборнддолженобеспечиватьпрохождение каждойкомандыменееодногораза.