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

Методичка_ОТтаП_Ч2

.pdf
Скачиваний:
14
Добавлен:
12.05.2015
Размер:
1.16 Mб
Скачать

Після виконання процедури Window вікно стає поточним. Це означає, що всі операції з вікном належать до тієї частини, яка визначена координатами X1,Y1,X2,Y2. При цьому переміщення курсору відбувається тільки в межах поточного вікна, яке визначене координатами (відносне переміщення), а позиція з координатами (1,1) є лівим верхнім кутом вікна. Частина екрана поза вікном стає недоступною, тобто «невидимою» для інших процедур і функцій.

Після виконання процедури Window додатково здійснюється переміщення курсору в позицію з координатами (1,1) поточного (тобто тільки-но створеного) вікна.

Слід пам'ятати, що сама процедура Window інтерпретує власні параметри в абсолютних координатах, а не в відносних координатах попереднього текстового вікна.

Так само, як і при роботі з рівним екраном, при використанні для виведення інформації Write та WriteLn у поточному вікні може здійснюватися «прокручування» або зрушення інформації в вікні на один рядок вверх. Це відбувається, коли при виведенні рядків досягнуто нижній кордон вікна. При завершенні роботи програми, яка використовувала вікна, здійснюється автоматичне відновлення параметрів текстового режиму, які були встановлені перед запуском програми, і поточним вікном стає весь екран.

Досить часто при роботі з вікнами використовується процедура Clrscr, яка не має параметрів. Вона використовується або для очищення поточного вікна, встановленого процедурою Window, або для очищення всього екрана. При цьому вікно (або екран) зафарбовується поточним кольором фону. Так само, як і для процедури Window, після виконання Clrscr, курсор встановлюється в позиції з координатами (1,1).

ClrScr процедура, яка очищує вікно, зафарбовуючи його поточним кольором фону.

Program Name_103;

Uses Crt;

Begin

СlrScr; {очищує повністю весь екран}

60

TextBackGround(Green); {колір фону – зелений}

Window(10,7,40,12); {створюємо нове вікно}

СlrScr; {на екрані з’являється зелений прямокутник}

TextColor(White); {колір тексту - білий} Write(”Білий на зеленому”); {виведення

білим у вікно}

End.

10.4. Керування звуком.

Для керування звуком в бібліотеці Crt задано наступні три процедури:

Sound(f:word) – задає частоту звукових коливань f.

NoSound – вимикає звук.

Delay(t:word) – забезпечує затримку в роботі програми, на

t мілісекунд.

Процедури роботи зі звуком дозволяють керувати вбудованим динаміком комп’ютера (якщо він є). Процедура Sound вмикає динамік, який починає давати звук з заданою у герцах частотою. Це ніяк не впливає на роботу програми, яка при цьому не зупиниться, і буде працювати одночасно з подачею звукового сигналу до тих пір, поки не трапиться виклик процедури NoSound, яка вимкне динамік [1].

Процедури роботи зі звуком треба використовувати обережно. Адже, якщо після процедури Sound не викликати процедуру NoSound, то звук не припиниться навіть після завершення програми.

Нерідко процедури Sound і NoSound використовують разом, з процедурою Delay, яка призупиняючи програму дозволяє задавати час звукового сигналу певної частоти.

10.5. Системний час і дата.

Для зчитування та встановлення часу і дати в операційній системі в бібліотеці Dos є наступні процедури:

SetTime(var Hour,Minute,Second,Sec100:Word);

– встановлює в операційній системі поточний час.

61

GetTime(var Hour,Minute,Second,Sec100:Word);

повертає встановлений в операційній системі поточний час.

Процедура передає через свої var-параметри значення поточної години (Hour), хвилини (Minute), секунди (Second), та

сотих часток секунди (Sec100) на момент виклику процедури. Діапазони значень:

Hour 0 .. 23 (години) Minute 0 .. 59 (хвилини) Second 0 .. 59 (секунди)

Sec100 0 .. 99 (соті долі секунди)

Фрагмент програми використання процедури

……………..

Gettime(h,m,s,c);

…………………

<фрагмент програми, який контролюється в часі>

…………………………..

Gettime(h1,m1,s1,c1);

{найпростіший підрахунок часу витраченого комп’ютером на обчислення фрагменту в секундах та сотих часток секунди}

writeln('t= ',s1-s,':',c1-c);

………………

Обчислюється та аналізується різниця окремо за годинами, хвилинами, секундам та часткам секунди, залежно від потреби. При необхідності «позичається» значення у більш старших одиниць.

Аналогічно

SetDate(var y,m,d,dw:word); – встановлює в операційній системі поточну дату.

GetDate(var y, m, d, dw: word); повертає встановлену в операційній системі дату.

Діапазони значень:

Year 1980..2099 (рік) Month 1..12 (місяць) Day 1..31 (день)

DayOfWeek 0..6 (0 - неділя, 1 – понеділок,…)

Приклад програми використання процедури

62

Program N_EK;

Uses Dos;

Const

Days:Array [0..6] Of String[11]=

('Неділя','Понеділок','Вівторок',

'Середа','Четвер','П’ятниця','Субота');

Var

Y,M,D,Dow:Word;

Begin

GetDate(Y,M,D,Dow);

WriteLn('Сьогодні : ',Days[Dow],',',M:0,

'-',D:0,'-',Y:0);

End.

10.6.Приклад.

Вякості прикладу розглянемо програму, яка генерує звичайну гаму.

Складемо блок-схему алгоритму виконання програми (рис.

10.1):

Початок

GotoXY(35,5); Write('Гама');

Ні

i=0, 7

Так

Sound(nota [i]); Delay(500);

NoSound;

Кінець

Рисунок 10.1

Program Laba_8;

Uses

Crt;

Const

63

nota:array [0..7] of word=(262,294,330,349,392,440,494,524);

Var

i:byte; Begin

GotoXY(35,5);

Write('Гама');{виводить слово в задані координати}

For i:=0 to 7 do Begin

Sound(nota[i]); {видає звуки заданої частоти}

Delay(500); {затримка в півсекунди}

End;

NoSound; {вимикаємо звук}

End.

10.7.Порядок виконання роботи.

1.Вибрати індивідуальне завдання. Номер варіанту відповідає номеру студента у списку групи.

2.Ознайомитись із теоретичним матеріалом.

3.Скласти алгоритм для розв’язання завдання.

4.Скласти і відлагодити програму на мові Паскаль, яка реалізує розв’язання поданого завдання за допомогою процедур і функцій, передбачених використанням модуля CRT.

5.Підготувати звіт по роботі.

10.8.Індивідуальні завдання.

Скласти алгоритм i програму розв’язання задач, використовуючи лише процедури і функції текстового режиму

1.Написати програму переміщення символу по екрану при натисканні клавіш керування курсором.

2.Намалювати 15 білих і 15 чорних вертикальних смуг, що чергуються. Здійснити імітацію їхнього руху.

3.Написати програму «більярд»: уведений користувачем довільний символ, після натискання клавіші Enter, повинен

64

рухатися по горизонталі екрана, відбиваючись від його границь.

4.Намалювати вікно. Натисканням клавіші Enter здійснити переміщення вікна екраном в горизонтальному напрямку.

5.Написати програму яка б виводила латинські символи в довільному порядку випадковими кольорами в межах усього екрана.

6.Намалювати вікно в центрі екрана. Здійснити зміну розмірів вікна при натисканні клавіші Enter.

7.Ввести довільний символ із клавіатури. Здійснити переміщення цього символу по спіралі, починаючи з лівого верхнього кута екрана.

8.Написати програму яка б малювала текстові вікна довільних кольорів з випадковими розмірами в довільному місці екрана.

9.Ввести довільний рядок із клавіатури. Натисканням клавіші Enter здійснити рух цього рядка по діагоналі екрана, змінюючи при цьому колір цього рядка від 0 до 15.

10.Ввести довільний символ у центрі екрана. Натисканням клавіші Enter здійснити рух цього символу по колу радіусом 4.

11.Написати програму «піаніно»: при натисканні клавіші С, D, E, F, G, A, H програма повинна видавати відповідно звуки

«До», «Ре», «Мі», «Фа», «Соль», «Ля», «Сі» 1-ої октави. При написанні програми використати формулу для генерації частот відповідних нот:

Hz Round 440 e

 

10 Nota

Ln(2) Okt

 

 

 

 

12

де Hz – змінна типу Word, частота ноти в Гц;

Okt – змінна типу Integer, приймає значення від -3 до 4; Nota – змінна типу Byte, приймає значення від 1 до 12.

12.Написати програму, що при натисканні клавіші друкувала символ і видавала при цьому звуковий сигнал різної частоти і різної тривалості.

13.Вивести різними кольорами посимвольно вміст довільного текстового файлу на екран.

65

14.Ввести довільний символ із клавіатури в центрі екрана. Натисканням клавіші Enter здійснити переміщення цього символу одночасно по двох діагоналях у напрямку від центра екрана до його кутів.

15.Ввести довільний рядок із клавіатури. Використовуючи змінну TextAttr вивести введений рядок посимвольно, яскравими символами на чорному тлі.

16.Написати програму яка б друкувала символи на екрані, починаючи з верхнього правого кута в напрямку зверху вниз (імітувати перевернений монітор праворуч ліворуч).

17.Ввести довільний символ із клавіатури. Здійснити переміщення цього символу по лівій спіралі починаючи із центра екрану.

18.Написати програму «більярд»: введений користувачем довільний символ, після натискання клавіші Enter, повинен рухатися по вертикалі екрана, відбиваючись від його меж.

19.Використовуючи формулу для генерації звуків у завданні №11 написати програму «піаніно» у повному обсязі, тобто реалізувати звучання всіх нот у межах однієї октави. При цьому передбачити можливість зміни октави і тривалості, а також відображення на екрані монітора номера октави і назви ноти.

20.Написати програму яка б друкувала символи на екрані починаючи з нижнього лівого кута в напрямку знизу нагору (імітувати перевернений монітор ліворуч праворуч).

21.За допомогою процедури Window намалювати шахівницю розміром на весь екран.

22.Здійснити заповнення екрана квадратними вікнами кольорів, що чергуються, по спіралі, починаючи з верхнього лівого кута екрана.

23.Здійснити заповнення екрана квадратними вікнами кольорів, що чергуються, по спіралі, починаючи з нижнього правого кута екрана.

24.Ввести довільний символ із клавіатури. Здійснити переміщення цього символу по правій спіралі починаючи із центра екрана.

66

25.Написати програму «більярд»: введений користувачем довільний символ, після натискання клавіші Enter, повинен рухатися по діагоналі екрана, відбиваючись від його меж.

26.Намалювати 4 білих і 4 чорних горизонтальних смуги, що чергуються. Здійснити імітацію їхнього руху.

27.Написати програму переміщення вікна довільного розміру екраном при натисканні клавіш керування курсором.

28.Намалювати вікно. Натисканням клавіш керування курсором здійснити переміщення вікна екраном у відповідному напрямку.

29.Намалювати «мотрійку» з вікон різних кольорів, починаючи з найбільшого вікна (розмір екрана) і закінчуючи вікном у центрі екрана.

30.Намалювати «вежу» з вікон різних кольорів.

10.9.Контрольні запитання.

1.Як описується вікна в мові Паскаль?

2.Як відбувається встановлення курсору в потрібну позицію вікна в мові Паскаль?

3.Який синтаксис процедури ТехtВаскGround і які її константи?

4.Який синтаксис процедури TextColor і які її константи?

5.Як повернути значення координат для поточної позиції курсору відносно до поточного вікна?

6.Які основні процедури роботи зі звуком, їх синтаксис?

7.Як можна визначити час виконання розрахунку за допомогою операторів мови Паскаль?

67

Додаток

Міністерство освіти України Національний технічний університет України

«Київський політехнічний інститут»

Кафедра автоматизації енергосистем

Заняття №7

Процедури. Робота з масивами.

Виконав: студент групи ЕК-71 Петренко Д.А.

Перевірив: доц. Іваненко А.А.

Київ 2011

68

На інших аркушах має бути викладене наступне (у

вказаному порядку):

1)мета роботи;

2)основні теоретичні відомості за темою;

3)умова завдання, вибраного відповідно до варіанта;

4)блок-схема алгоритму вирішення завдання;

5)програма мовою Паскаль і результати розрахунків;

6)аналіз результатів розрахунків та висновки.

69