Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lektsii_po_infe

.pdf
Скачиваний:
8
Добавлен:
29.03.2015
Размер:
2.2 Mб
Скачать

 

 

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) Тестированиеком.Нтестовборнддолженобеспечиватьпрохождение каждойкомандыменееодногораза.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]