Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 44

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 44 страницаОсновы программирования (947332) страница 442013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 44)

Процедура ClrScr - очищает окно, выводя в него пробелы с текущиматрибутом. После этого курсор устанавливается в верхний левый угол окна.Если окно не установлено, то очищается весь экран. Эту процедуру обычноиспользуют после определения окна и атрибута его символов, чтобы обозна­чить окно на экране.5. Функция WltereX:word - возвращает координату х текущего положе­ния курсора в окне.6. Функция WhereY:word - возвращает координату у текущего положе­ния курсора в окне.7. Процедура GotoXY(x,y:word) - перемещает курсор на знакоместо с ко­ординатами X и у.Модуль ctr содержит также процедуры, работающие с текущей строкой(строкой, в которой стоит курсор).8.

Процедура DelLine - удаляет текущую строку.9. Процедура InsLine - вставляет строку, сдвигая остальные строкивниз.10. Процедура ClrEol - стирает часть строки справа от курсора.Пример 8.1. Разработать программу вычисления среднего арифметиче­ского заданного количества чисел п, где п<10. Реализовать оконный интер­фейс, представленный на рис. 8.3.Верхнее окно интерфейса не зависит от исходных данных. Его нужноопределить, задать цвета символов и фона, очистить и вывести в него текст.Ввод ответа пользователя будет выполняться с того места, где окажется кур­сор.

Количество окон для ввода чисел зависит от введенного значения. Ихположение на экране необходимо рассчитать.2588. Управление техническими средствами и взаимодействие с MS DOSВведите количество чисел:51 '*'25!.57-483469- . ^:' ^^ - :-!-J'' ..' ', U.•'',,. s-s^^ir.jСреднее арифметическое =27.2,. ,',<**''Рис. 8.3. Интерфейс программы вычисления среднегоарифметическогоНижнее окно также не зависит от исходных данных. Его нужно опреде­лить и вьюести в него результат. Ниже представлена соответствующая про­грамма с комментариями.Program ex;Uses Crt;Var a:array[L JO] of integer;XyClx,nJ:integer; s:real;BeginClrScr;{очищаем экран}Window(20,3,50,5); {вьзделяем окно ввода количества чисел}TexiAitr:=16+7; {определяем светло-серые символы на синем фоне}ClrScr;{вьщеляем окно ввода}GotoXY(2,2);{устанавливаем курсор для вывода запроса}Write(*Beedume количество чисел: *); {выводим запрос}ReadLn(n);{вводим ответ пользователя}dx:^(80'(n^l)*3)divn;х:=0;s:=0;TextAttr:=2*I6-^14; {желтые символы на зеленом фоне}for i:=I tondobegin х:-х+3;Window(x,7^+dx,9); {устанавливаем окно ввода данных}ClrScr;{вьщеляем это окно}259Часть I.

Основы алгоритмизации и процедурное программированиеGotoXY(2,2); {устанавливаем курсор для ввода данных}ReadLn(a[i]); {вводим число}s:=s+afij;x:=x-^dx;end;TextAttr:=4*16+14; {желтые символы на красном фоне}Window(18ylly53J3); {устанавливаем окно результата}ClrScr;{выделяем окно результата}GotoXY(3,2); {устанавливаем курсор для вывода результата}Write('CpedHee арифметическое = \s/n:5:2);ReadLn;{ожидаем нажатия клавиши Enter}Wmdow(l, 1,80,25); {восстанавливаем окно на весь экран}TextAttr:=7;{восстанавливаем стандартные цвета}ClrScr;{очищаем экран}End.8.2. Управление клавиатуройКлавиатура - достаточно сложное устройство, в состав которого входитмикропроцессор и память - буфер клавиатуры.

При нажатии и отпусканиилюбой клавиши в буфер клавиатуры записываются так называемые коды наэюатия/отпуекания, при этом микропроцессор клавиатуры отсекает дребезгклавиш - сигналы, полученные при неполном контакте в процессе нажатияи отпускания клавиши.Клавиши клавиатуры делят на буквенно-цифровые, специальные и кла­виши смещения.К буквенно-цифровым относят клавиши букв, цифр, специальных знакови пробела. Их используют для ввода информации.Специальные клавиши - это клавиши управления курсором (<-, Т, ->, i .Home, End, Tab, Page up. Page down), удаления (Del, Backspace), клавиши пе­реключения режимов (Ins, Caps lock, Num lock, Scroollock), функциональныеклавиши (Esc, Break, Fl, F2, F3, ..., FI2) и т.д.

Эти клавиши используют длявыполнения вспомогательных операций во время работы с компьютером.Клавиши смещения - это клавиши Shift, Ctrl и Alt. Их используют сов­местно с другими клавишами для изменения вводимых кодов. Так, если принажатии клавиши «а» формируется код строчной буквы а латинского алфави­та, то нажатие Shift-a приведет к вводу кода заглавной буквы А латинскогоалфавита.Всего выделяют около 400 различных комбинаций, которые могут обра­батываться программой. Эти комбинации формируются на основании кодовнажатия/отпускания специальной программой BIOS (базовая система обра­ботки ввода-вывода) и записываются в буфер BIOS клавиатуры.2608. Управление техническими средствами и взаимодействие с MS DOSИзначально считалось, что количество различных комбинаций не пре­высит 256, и, соответственно, для представления этой информации будет до­статочно 1 байта (см.

приложение 2), но со временем количество комбинацийвозросло, и потребовалось использование второго байта.В настоящее время для представления комбинаций, не вошедших в таб­лицу ASCII, используют расширенные коды, состоящие из двух байт: первыйбайт равен О, а второй - содержит расширенный scan-код (см. приложение 3).Ввод буквенно-цифровых данных с клавиатуры осуществляется проце­дурами Read и ReadLn, при этом реально происходит чтение кодов ASCII избуфера BIOS клавиатуры. Считанные символьные коды преобразуются вовнутренний формат в соответствии с типом переменной.Процедуры Read и ReadLn обрабатывают только комбинации, соответст­вующие буквам и цифрам, а также некоторые специальные комбинации, на­пример, маркер конца строки (комбинация символов #13, #10).Модуль crt содержит специальные функции управления клавиатурой,которые позволяют работать с расширенными кодами.1.

Функция KeyPressed: boolean - возвращает true, если нажата любаяклавиша, false - если буфер BIOS клавиатуры пуст; функция не извлекаетсимволы из буфера, не ожидает ввода;2. Функция ReadKey:char - извлекает очередной код из буфера BIOSклавиатуры и возвращает его как результат операции, ожидает ввода, но невысвечивает вводимого символа.Для чтения расширенного кода функцию ReadKey необходимо вызыватьдважды: первый раз она вернет О, а второй - расширенный scan-код:chl:=ReadKey; {читаем код}ifchl=#0 then ch2:=ReadKey; {если код=0, то читаем второй байт}Пример 8.2. Разработать программу определения кодов клавиш и ихкомбинаций.

Выход из цикла осуществлять по нажатию клавиши Esc.Program ex;Uses crt;Var cl,c2:char;Beginrepeat cl:=ReadKey;{вводим код}ifcl=W then{если расширенный код}beginc2:=ReadKey;{то читаем расширенный scan-код}WriteLn(ord(cl):5, ord(c2):5) {выводим расширенный код}endelse WriteLn(ord(cl):5){выводим код ASCII}until c7 =#27;{до нажатия Esc}End.261Часть 1. Основы алгоритмизации и процедурное программированиеПримечание. Функция ReadKeyобрабатывает коды из буфера BIOS кла­Номервиатуры, поэтому с ее помощью нельзяСодержимоебитаполучить коды нажатия/отпускания от­дельных клавиш, не преобразуемых в1 - включен режим вставкирасширенные scan-коды, например, кла­1 - включен режим Caps Lock~"2 ~виш смещения, клавиш переключения1 - включен режим Num Lockрежимов.1 - включен режим Scroll LockСостояния клавиш смещения и1 - нажата клавиша Altклавиш переключения режимов BIOS1 - нажата клавиша Ctrlфиксирует в байте состояния клавиа­1 - нажата клавиша левый Shift |туры (табл.

8.2), который расположен в1 - нажата клавиша правый Shift | оперативной памяти по адресу $0:$417.Для прямого обращения к этомубайту можно использовать стандартно объявленный массив Mem:array of byte, например:Mem[$0:$4J7], или наложить некоторую переменную на интересующий нас байт оперативнойпамяти;Т а б л и ц а 8.2Var KeyState.byte absolute $0:$417;... .8.3. Управление динамикомМодуль crt также содержит процедуры, обеспечивающие управление ди­намиком.\. Процедура Sound (f:word) - генерирует звук указанной частоты в Гц.Для справки, основной гамме соответствуют следующие частоты: нота «до»основной октавы - 330 Гц, далее - 349 Гц, 370 Гц, 392 Гц, 415 Гц, 440 Гц,466 Гц, 494 Гц, 523 Гц, 554 Гц, 588 Гц, 622 Гц и, наконец, нота «до» следу­ющей октавы - 660 Гц.

Частоты нот других октав кратны частотам основной.2. Процедура NoSound - выключает динамик.3. Процедура Delay (Uword) - обеспечивает задержку на заданный ин­тервал времени, мс.Поскольку к настоящему моменту времени быстродействие компьюте­ров существенно возросло и изменились некоторые принципы их построе­ния, процедура Delay не всегда обеспечивает корректную задержку, как вид­но из последующей программы. В этих случаях для организации задержкицелесообразно использовать процедуру, которая читает реальное время.4.

Процедура GetTime (VarHour, Minute, Second, SeclOO:word) - возвра­щает текущее время суток. Определена в модуле Dos.Пример 8.3. Разработать программу проигрывания основной октавы.Проигрывание гаммы осуществляется включением и выключением ди­намика с разными частотами.2628.

Управление техническими средствами и взаимодействие с MS DOSProgram ex;Uses Crt;Const f: array[L.13] of word = (330, 349, 370, 392, 415, 440,466, 494, 523, 554, 588, 622, 660);Var i:byte;Begin for i:=l to 13 dobeginSound(f[i]);forf^lto 5000 do Delay(lOOO); {задержка ?!}NoSound;end;End.Чтобы не подбирать время задержки для конкретного компьютера, пост­роим свою процедуру обеспечения требуемой задержки, использующуюпроцедуру GetTime:Program ex;Uses Crt, Dos;Procedure NewDelay(dTime:word);Var key:boolean;Hour, Min, Sec, SeclOO, MyHour, MyMin, MySec, MySeclOO: Word;BeginGetTime(Hour, Min, Sec, Sec100); {узнаем текущее время}{определяем время завершения задержки}MySeclOO:^SeclOO+dTime; MySec:=Sec+MySecl00 div 100;MySeclOOc^MySeclOO mod 100;MyMin:=Min-^MySec div 60;MySec:=MySec mod 60;MyHour:-Hour-^MyMin div 60; MyMin:=MyMin mod 60;key:=false;while not key do {цикл задержки}beginGetTime(Hour, Min, Sec, Seel00); {узнаем текущее время}{проверяем, наступил ли заданный момент}if (Ноиг>МуНоиг) or ((Ноиг=МуНоиг) and ((Min>MyMin) or((Min-MyMin) and ((Sec>MySec) or((Sec^MySec) and ((SeclOO>^MySeclOO)))))))then key:=true;endEnd;Const f array[L.13] of word = (330, 349, 370, 392, 415, 440,466, 494, 523, 554, 588, 622, 660);Var iibyte; j:integer;2638.

Управление техническими средствами- и взаимодействие с MS DOS{описываем массив окон пунктов меню}Const menu:array[L,4] ofwin=((xl:5:yl:4;x2:15;y2:4;text: 'new '),(xl:5;yl:5;x2:15;y2:5;text: 'open'),(xl:5;yl:6;x2:15;y2:6;text: save'),(xl:5;yl: 7;x2:15;y2:7;text: 'exit'));{процедура рисования пункта меню}Procedure DrawWin(w:win;attr:byte);Beginwith w dobeginTextAttr:=attr;{устанавливаем атрибут окна пункта}Window(xl,у1 ,х2,у2); {устанавливаем окно пункта}Clrscr;{высвечиваем окно пункта}GotoXY(2,l);{устанавливаем курсор}Write(text);{выводим название пункта}end;End;{процедура рисования меню с выделенным пунктом npos}Procedure DrawMenu(npos: integer);BeginClrscr;for i:=l to 4 doifi=npos then DrawWin(menu[i],94) {выводим выделенный пункт}else Draw Win (menufij, 30);{выводим невыделенный пункт}End;{основная программа}Beginnpos:=I; {выделенный пункт меню}DrawMenu(npos); {выводим меню}repeatchl: =ReadKey; ifchl =#0 then ch2: =ReadKey;case chl ofW: case ch2 of#72: begin{стрелка вверх}ifnpos>l then {если не верхний пункт}bemiDrawWin(menu[npos],30); {убираем выделение теку­щего пункта меню}npos:=npos-l; {переходим к предыдущему пункту}DrawWm(menu[npos]y94); {выделяем новый пункт}end;end;265Часть L Основы алгоритмизации и процедурное программированиеBegin for i:=l to 13 dobeginSound(f[i]):NewDelay(50);NoSound;end;End8.4.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6278
Авторов
на СтудИзбе
315
Средний доход
с одного платного файла
Обучение Подробнее