Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

NoSound




Begin

End.

Begin

End.

Begin

End.

Begin

Var

X: integer;

Y: real;

то оператору Y:= Х+2; синтаксично не має помилок, хоча типи змінних і не збігаються. Перетворення типів (з цілого у дійсний) у цьому випадку виконується автоматично.

В той же час оператор X: = 2.78; буде помилковим, тому що автоматичне перетворення дійсних типів у цілі не виконується. Зверніть увагу, що константа 12.0 з точки зору компілятора буде також дійсною, хоча дробова частина і дорівнює нулю, тому що константа містить десяткову точку.

Аналогічно не можна змішувати літерні та числові типи даних, тобто вираз типу: 5 + ‘F’ є помилковим.

Однак відсутність автоматичного перетворення типів у Паскалі не означає, що він зовсім не має засобів перетворення даних: просто їх необхідно використовувати явно. Так, для перетворення значень одного скалярного типу в інший можна використовувати наступні функції перетворення типів:

Chr(I) — перетворює цілий тип у літерний, тобто повертає символ стандартного коду таблиці ASCII з номером, що дорівнює значенню І. Якщо значення більше 255, виникає програмне переривання.

Наприклад: Chr(lOS), результат = ‘і’.

Ord(S) — для значень літерного типу S, функція Ord повертає їх номер згідно з таблицею ASCII. Літерний тип перетворюється у цілий.

Наприклад: Ord(‘A’); результат = 65.

Round (X) — повертає значення X, округлене до найближчого цілого числа. Результат має цілий тип, тобто дійсна змінна перетворюється на цілу. Наприклад: Round(5.6); Результат = 6.

Тrипс (X) — повертає найближче ціле число, яке менше або дорівнює X, якщо Х>=0, і більше або рівне X, якщо X<0. Результат відноситься до цілого типу.

Виходячи з цього, наступний оператор X:= Y/X; буде помилковим (X, як описано вище, має цілий, a Y - дійсний тип), а оператор X: = round (Y/X); помилок не має.

Зверніть ще увагу на те, що операції DIV та. MOD виконуються тільки з цілими типами даних і спроба використати у якості операторів для них дійсні дані призводить до помилки. Наприклад, помилковими будуть вирази:

1.5 div 3 (один з операндів - дійсне число)

5 mod Y (змінна Y має дійсний тип)

4/1 div 2 (результатом операції ділення 4/1 буде дійсне число 4.0)

Введення даних — це передача інформації від зовнішнього носія в оперативну пам’ять для обробки.

Виведення — це зворотний процес, коли дані передаються після обробки з оперативної пам’яті на зовнішній носій.

У мові Паскаль стандартним засобом спілкування людини з комп’ютером є консоль (тобто це такі пристрої, як клавіатура та екран монітора).

Процедура читання Read забезпечує введення числових даних, символів, рядків і т.д. для наступної їхньої обробки.

Формат введення:

Read (x1, х2,...хn);

де х1, х2 ,... хп — змінні допустимих типів даних.

Значення x1, x2 ,.. хn набираються мінімум через один пробіл на клавіатурі, при цьому вони відображаються на екрані для контролю правильності введення. Після набору даних однієї процедури Read натискається клавіша Enter. Значення введених даних повинні строго відповідати типам цих даних, інакше компілятор виводить на екран повідомлення про помилку. Якщо в програмі є кілька процедур Read, дані для них вводяться потоком, тобто після зчитування даних для однієї процедури Read дані для наступної процедури Read набираються в тому ж рядку до закінчення рядка.

Процедура читання Readln аналогічна процедурі Read, відмінністьполягає в тому, що після зчитування останнього в списку значення дляоднієї процедури Readln дані для наступної процедури Readln будутьзчитуватися з початку нового рядка.

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

Формат виведення:

write (Y1, Y2,... Yn)

— виведення на монітор;

де Y1, Y2 ... Yn — дані, що виводяться.

Процедура запису Writeln аналогічна процедурі Write, але після виведення останнього в списку значення для поточної процедури Writeln відбувається переміщення курсору на початок наступного рядка. Процедура Writeln, записана без параметрів, виконує тільки переміщення курсору на початок наступного рядка. Наприклад: Writeln (‘Y1=’,Y1)

У процедурах виведення Write і Writeln є можливість запису виразу, що визначає ширину поля для виведення. У прикладах, що подаються далі, використовуються наступні умовні позначення: I — ідентифікатор, що визначає ціле число, R —ідентифікатор, що визначає дійсне число, р, q — цілі константи, що визначають довжину поля виведення та кількість цифр після десяткової крапки.

1. Виведення десяткового значення цілої величини I у крайню праву позицію поля шириною р (пробіли перед числом вказані знаком «_»).

Значення І Вираз Результат
  write(I:6); ______134
  write(I:10); _______________1
  write(I+I:7); _______624

2. Виведення у крайню праву позицію поля шириною p значення дійсної величини R у форматі з фіксованою точкою, причому після десяткової точки виводиться q цифр (0 <= q <= 24), що представляють дробову частину числа. Якщо q = 0, ні дробова частина, ні десяткова крапка не виводяться. Якщо q > 24, то при виведенні використовується формат із плаваючою точкою. Без використання форматування число також виводиться у форматі з плаваючою точкою.

 

Значення R Вираз Результат
511.04 write(R:8:4); 511.0400
-46.78 write(R:7:2); ___-46.78
-46.78 write(R:9:4); ___-46.7800

Розберемо структуру програми мовою Паскаль. Програма складається з рядків, максимальна довжина яких не повинна перевищувати 127 символів. Програміст, набираючи текст програми, має право розміщувати рядки на екрані довільно. Рядок може починатися з будь-якої колонки. Кількість операторів у ньому довільна, причому відокремлюються вони один від одного крапкою з комою. Однак для яснішого сприйняття програми рекомендується розміщувати кожен оператор на окремому рядку, а складені оператори взагалі виокремлювати відступами.

Синтаксично програма складається з необов’язкового заголовку і програмного блоку, який будується з двох частин: описової; виконавчої.

Блок, що не входить до складу будь-якого іншого блоку, називається глобальним. Блоки, що знаходяться в глобальному блоці, називаються локальними. Глобальний блок — це основна програма, він присутній обов’язково. Локальні блоки — це процедури і функції (вивчатимуться пізніше), їх наявність не обов’язкова. Об’єкти програми (змінні, константи тощо) відповідно називають глобальними і локальними. Область дії об’єктів — блок, де вони описані, і усі вкладені в нього блоки.

На початку програми знаходиться заголовок, що складається в загальному випадку з зарезервованого слова Program та імені програми. Заголовок несе чисто змістове навантаження і може бути відсутнім.

• Після заголовка знаходиться програмний блок, що складається в загальному випадку із п’яти розділів, перші чотири з яких—описова частина, а останній—виконавча. Склад цих блоків наступний:

• список імен використовуваних бібліотечних модулів (програм, щонаписані заздалегідь, які можна використати при розв’язанні даної задачі),

• опис констант;

• опис типів користувача;

• опис змінних;

• опис процедур і функцій користувача;

• оператори.

Таким чином структура програми має такий вигляд:

Program <ім’я>;

Uses <ім’я1, ім’я2>; {список бібліотечних модулів}

Const < ідентифікатор > = < значення >;

Туре < ідентифікатор > = < опис типу >;

Var < ідентифікатор >: < тип >;

{розділ опису підпрограм}

< оператори >;

Будь-який розділ, крім розділу операторів, може бути відсутнім. Розділ uses завжди знаходиться після заголовку програми. Решта розділів можуть зустрічатися в програмі будь-яку кількість разів у довільному порядку. Головне, щоб усі описи об’єктів програми були зроблені до того, як вони будуть використані.

Розділ uses складається з зарезервованого слова Uses і списку іменстандартних бібліотечних модулів та бібліотечних модулів користувача.

Формат опису:

Uses < ім’я 1 >,< ім’я 2 >,...;

Бібліотечні модулі створюються заздалегідь і містять часто використовувані програми. Вони можуть бути створені самим користувачем.

У шкільному курсі ми використовуємо деякі зі стандартних модулів, що створені розробниками мови Паскаль: Crt і Graph:

Crt — містить засоби керування монітором у текстовому режимі, клавіатурою, а також звукові ефекти.

Graph —містить пакет графічних засобів, що забезпечують ефективну роботу з екраном монітору у графічному режимі.

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

У програмі, що записана мовою Паскаль, розділ операторів є основним. Він починається зарезервованим словом Begin (початок), далі розміщуються оператори мови, відділені один від одного крапкою з комою. Завершує розділ зарезервоване слово End (кінець) і крапка:

< серія >;

У будь-якому місці програми можуть вживатися коментарі. Це текст, за допомогою якого програміст занотовує деякі пояснення для користувачів програми. Текст коментарю обмежується символами { } або (* *) і може містити комбінації латинських і російських літер, цифр і інших символів. В обмежувачах (* *) пробіли між дужкою і зірочкою заборонені, і, крім того, у тексті не повинні знаходитися знаки обмежувачів, з яких коментар починається. Обмежень на довжину коментарю немає.

Домашнє завдання

• Вивчити означення, що прочитані на лекції.

• Із підручника можна дати практичні завдання зі с. 42-43.


ЗАНЯТТЯ 10. Формування зображення на екрані. Лінійні програми

Мета заняття: дати поняття про режими роботи монітору та принципи виведення зображення на екран у цих режимах.

Теоретичний матеріал

Монітор комп’ютера (з відеоадаптером CGA та вище) може працювати в одному з двох режимів: текстовому; графічному.

Текстовий режим дає змогу виводити на екран будь-який символ ASCII-таблиці у визначене знакомісце екрану, яке знаходиться на перетині рядка та стовпця. Кількість знакомісць залежить від текстового режиму, але найчастіше дорівнює 25 рядкам по 80 стовпців у кожному. В цьому режимі можна керувати кольором тла та кольором і яскравістю символів, які вводяться з клавіатури. У графічному режимі будь-яке зображення отримується як сукупність різнокольорових точок— пікселів.

Кількість елементів зображення задається відповідним режимом, але стандартно дорівнює 640 (по горизонталі) на 480 (по вертикалі) пікселів.

Для роботи в текстових режимах розробниками мови програмування Паскаль були написані спеціальні підпрограми, що об’єднані в бібліотечний модуль Crt. Цей модуль може виконувати такі функції:

• регулювати яскравість світіння символів;

• керувати кольором зображення і тла;

• керувати текстовим курсором;

• організовувати роботу з текстовими вікнами;

• організовувати звукові ефекти;

• керувати клавіатурою.

Деякі з цих підпрограм розглянемо нижче. Так, наприклад, наступна процедура дозволяє очищати екран та керувати курсором на екрані:

ClrScr — повністю перефарбовує екран або поточне вікно у активний колір тла, і переміщує курсор у лівий верхній кут екрана або поточного вікна (координати 1,1).

При роботі в текстовому режимі із кольоровим монітором кожний виведений на екран символ може бути одного з 16 (0—15) можливих кольорів. Тло може бути одним із 8 (0—7) кольорів. Для встановлення кольору виведених символів використовується процедура TextColor, для встановлення кольору тла — процедура TextBackGround.

TextColor(Color:byte) —установити колір символів, що виводяться;

TextBackGraund(Color:byte) — установити колір тла.

Значення параметрів можна задавати як константами (наприклад, Yellow ), такі їх числовими еквівалентами (наприклад, 14). Повний перелік можливих кольорів наведений нижче:

Темні кольори Світлі кольори
0 (Black) — чорний 8 (DarkGray) — темно-сірий
1 (Blue) — синій 9 (LightBlue) — світло-синій
2 (Green) — зелений 10 (LightGreen) — світло-зелений
3 (Cyan) — блакитний 11 (LightCyan) — світло-блакитний
4 (Red) — червоний 12 (LightRed) — світло-червоний
5 (Magenta) — фіолетовий 13 (LightMagenta) — світло-фіолетовий
6 (Brown) — коричневий 14 (Yellow) — жовтий
7 (LightGray) — світло-сірий 15 (White) —білий

Щоб надати виведеним символам ефекту мерехтіння, при встановленні кольорів вказується константа Blink (або 16 ). Мерехтіння буде підтримуватися доти, поки не відбудеться установка кольору символів, що виводяться, без мерехтіння. Наприклад:

TextColor(Yellow+Blink); Write(‘Жовті символи, що миготять’);

TextColor (12+16); Write (‘Світло-червоні символи, що миготять’);

TextColor(6); Write(‘Коричневі символи’).

Існують також процедури, що керують яскравістю зображення. Всі вони діють до їх скасування, тобто до встановлення іншого режиму:

Low Video — встановлює режим мінімальної яскравості світіння виведених на екран символів.

Norm Video — встановлює режим нормальної яскравості світіння виведених на екран символів. Цей режим встановлюється автоматично при ініціалізації модуля Crt.

High Video — встановлює режим максимальної яскравості світіння. Існує можливість у будь-який момент роботи програми використовувати для виведення не весь екран, а деяку його частину, що називається вікном. Розмір вікна визначається користувачем, але вікно не може перевищувати розміру екрана.

Для організації вікон у Паскалі використовується процедура:

Window(X1, Y1, Х2, Y2);

де X1, Y1 — координати лівого верхнього, а Х2, Y2 — правого нижнього кута вікна. Розмір максимального вікна (повний екран)—(1,1,80,25), мінімального — один стовпчик на один рядок.

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

Для формування складного зображення на екрані користувач має можливість переводити курсор у будь-яку позицію екрана. Для цього мовою Паскаль передбачені такі процедури і функції:

GoToXY(X, Y:byte) — процедура переводить курсор у задану позицію екрана з координатами X (стовпчик), Y (рядок); верхній лівий кут екрана має координати (1,1), а правий нижній у стандартному режимі (80,25);

WhereX, WhereY — функції для одержання відповідно значень X- або Y- координати курсору щодо поточного вікна. Діапазон значень, що повертаються, визначається розмірами поточного вікна або повного екрана.

Завдання учням: Написати фрагмент програми, що виведе в середині екрана прізвище учня червоним кольором, а у наступному рядочку під прізвищем — ім’я жовтим кольором. Прізвище необхідно вивести підвищеною яскравістю, а ім’я — з мерехтінням. Колір тла має бути синім,

program task;

uses crt;

textbackground(blue); {встановлення кольору тла}

clrscr; {очищення екрана}

highvideo; {встановлення підвищеної яскравості зображення}

textcolor(red);{встановлення кольору виведення}

gotoxy(35,12); {переведення курсору в задану тонку - центр екрана}

writeln(‘Ivanov’); {виведення прізвища}

normvideo;

textcolor(yellow+blink); {встановлення хольору виведення зображення з мерехтінням}

gotoxy(35,13);

writeln(‘Petro’);

У текстовому режимі операторами виведення можна виводити на екран будь-який символ ASCII-таблиці, навіть такий, клавіша якого відсутня на клавіатурі. В цьому випадку на екран монітора його можна вивести або за допомогою символу # з наступним ASCII-кодом символу, або набиранням ASCII-коду необхідного символу на додатковій цифровій клавіатурі (з натиснутою клавішею Alt). Наприклад, один і той самий символ «-» можна вивести на екран таким чином:

Writeln(‘-’); {символ отриманий одночасним натисканням клавіш Alt+<ASCII код символу>}

Writeln(#219);

За допомогою таких псевдографічних символів можна створити на екрані нескладний малюнок, схожий на всім відомий «японський кросворд», а також різного вигляду таблиці (дивись повний набір псевдографічних символів ASCII-таблиці). Поряд із підпрограмами організації роботи з екраном модуль Crt містить засоби керування звуком.

У персональних комп’ютерів є можливість генерувати звукові сигнали за допомогою вбудованого динаміка з частотою 37—32767 Гц. Гучність звуку не регулюється. Стандартний звуковий сигнал («біп») постійної тривалості (0,25 с) і частоти (800 Гц) викликається сьомим символом ( ^G ) кодової таблиці ASCII. Наприклад:

writeln(‘Помилка в даних’,^G);

writeln(‘Працює процедура’,#7,#7);

writeln(‘Підключен драйвер’,Chr(7), Chr (7));

Для керування частотою звуку і його тривалістю в мові Паскаль використовуються стандартні процедури:

sound(l) — активізує звукові засоби комп’ютера. Ціле значення I вказує частоту звучання звуку в герцах. Звук зазначеної частоти буде генеруватися доти, доки не буде скасований процедурою NoSoud;

NoSound — скасування звуку. Скасовує звуковий режим, заданий процедурою Sound;

Delay(І) — вказує час, упродовж якого лунає сигнал.

Приклад:

Sound(500);

Delay(2000);

End;

У даному прикладі звуковий сигнал частотою 500 Гц буде звучати 2 секунди (2000 мс). За допомогою цих процедур можна створити найрізноманітніші звукові ефекти. Для цього використовується набір частот, що відповідають нотам різних октав:

Нота Велика октава Мала октава Перша октава Друга октава
До 130,81 261,63 523,25 1046,50
Ре 146,83 293,66 587,33 1174,07
Мі 164,81 329,63 559,26 1318,05
Фа 174,61 349,23 698,46 1396,09
Соль 196,00 392,00 784,99 1568,00
Ля 220,00 440,00 880,00 1760,00
Сі 246,94 493,88 987,77 1975,00

Для використання в процедурі Sound усі зазначені в таблиці значення частот округлюються. Приклад, виконання за допомогою вбудованого динаміка дитячої пісеньки «Ялинка» за такою лінійною програмою:

program muzika;

uses crt;




Поделиться с друзьями:


Дата добавления: 2014-10-22; Просмотров: 347; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.