- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Тэкставыя стандартныя файлы
У мове Pascal прадугледжаны стандартны від сувязі. Для гэтага апісаны два тэкставыя файлы: Input і Output.
Існуюць чатыры працэдуры, пры дапамозе якіх здзяйсняюцца аперацыі ўводу-вываду даных, звязаныя з файламі тыпу Text:
Інфармацыя ідзе з клавіятуры ў стандартны файл Input, стандартны файл Output звязаны з дысплеем. Працэдуры ўводу-вываду могуць быць як з параметрамі, так і без іх. Калі ўводзім (ці выводзім) некалькі даных, яны аддзяляюцца ў спісе ўводу (вываду) коскай.
Апісанне тэкставага файла:
Var Ft : text;
Фарматы працэдур для чытання (уводу) інфармацыі з тэкставага файла:
Read(Ft, x);
Read(Ft, x1, …, xn);
дзе першы параметр Ft – імя файлавай пераменнай, а другі – пераменная дазволенага тыпу, у якую ўводзіцца нейкае значэнне. Калі Ft = Input, тады ў аператарах уводу імя файла можа быць апушчана.
Read і Readln – працэдуры без параметраў. Чакаецца любы ўвод з клавіятуры (паўза).
Аператар Read(Input, x) эквівалентны аператару Read(x); аператар Read(Input, x1, …, xn) – аператару Read(x1, …, xn). Аператар Read(Ft,x1, …, xn) эквівалентны раду аператараў: Read(Ft,x1); Read(Ft,x2); …; Read(Ft,xn); аператар Readln(Ft,x1, …, xn) – наступнаму раду аператараў: Read(Ft,x1); Read(Ft,x2); …; Readln(Ft,xn), дзе x1, …, xn – пераменныя дапушчальных тыпаў.
Фарматы працэдур для вываду інфармацыі ў тэкставы файл:
Write(Ft, x); Writeln(Ft, x);
Write(x); Writeln(x);
Працэдура Write(Ft, x1, …, xn) эквівалентная Write(Ft, y1); …; Write(Ft, yn).
Працэдура Writeln(Ft, x1, …, xn) эквівалентная Write(Ft, y1); …; Writeln(Ft, yn), дзе першы параметр Ft – імя файлавай пераменнай тыпу text.
Калі Ft Output, тады яго можна апусціць.
Writeln(Ft) {выводзіць пусты радок у файл Ft}
Writeln {выводзіць пусты радок у файл Output}
Заўвага. Значэнні, якія выводзяцца, аўтаматычна пераўтворацца з унутранага ўяўлення ў сімвальнае; значэнні, якія ўводзяцца, – з сімвальнага ўяўлення ва ўнутранае.
Увод даных розных тыпаў
Тып пераменных пры ўводзе з клавіятуры можа быць толькі простым, не ўнутраным (г. зн. цэлым, сапраўдным, сімвальным) ці радковым або сумяшчальным з імі (дыяпазоны).
Пры ўводзе лікавыя значэнні павінны набірацца па правілах сінтаксісу. Два лікі лічацца раздзеленымі, калі паміж імі ёсць хоць адзін прабел, ці сімвал(ы) табуляцыі (#9), ці канец радка (#13#10).
Калі ўводзіцца сімвальнае значэнне, тады ў адпаведную пераменную запішацца чарговы сімвал за апошнім, уведзеным да гэтага.
Напрыклад, няхай апісаны дзве сімвальныя пераменныя c1, c2: VAR c1, c2 : Char. Вынік выканання аператара Read(c1, c2) прадстаўлены ў наступнай табліцы.
Уведзена з клавіятуры |
c1 |
c2 |
аб |
'а' |
'б' |
аб |
'а' |
#13 |
|
#13 |
#10 |
Сімвал азначае націсканне клавішы ўводу <Enter>.
Увод радкоў. Пачатак радка ідзе адразу за апошнім уведзеным да гэтага сімвалам (з першай пазіцыі, калі радковая пераменная стаіць першай у спісе ўводу). Чытаецца колькасць сімвалаў, роўная аб’яўленай даўжыні радка. Але калі ў час чытання пападаецца сімвал #13, тады чытанне радка спыняецца, але сам сімвал #13 у радковую пераменную не запісваецца, бо ён служыць раздзяляльнікам радкоў.
Як увесці булеўскае значэнне? Паколькі гэта ўнутраны тып і ён не прыстасаваны да ўводу, то можна прымяніць наступную хітрасць:
VAR by : Byte;
boo : Boolean ABSOLUTE by;
{дазваляе пераменную boo размясціць на месцы
пераменнай by і ўвесці значэнне ў by}
. . .
Read(by);
{закадзіруйце 0 = False, 1 = True і ўвядзіце з клавіятуры 0 ці 1 – гэта і будзе лічыцца булеўскім значэннем}
Пасля набору даных для адной працэдуры Read націскаецца клавіша ўводу <Enter>. Значэнні пераменных павінны ўводзіцца ў строгай адпаведнасці з парадкам пералічэння іх у спісе ўводу і з сінтаксісам мовы. Калі ж, напрыклад, x1 мае тып Integer, а пры ўводзе набіраецца значэнне тыпу Char (значыць, нейкі сімвал), то ўзнікне памылка ўводу-вываду. Паведамленне аб памылцы мае наступны выгляд: I/O error XX, дзе XX – код памылкі. Тлумачальны тэкст у даведніках дапаможа вызначыць прычыну праграмнага перарывання.
Прыклад.
VAR I : Real;
J : Integer:
K : Char;
BEGIN
Read(I, J, K);
…
Набяром першы варыянт уводу: 235.98 100 G
Гэта добры ўвод, і адбудзецца наданне значэнняў, але пераменная К атрымае не значэнне 'G', а прабел:
I := 235.98; J := 100; K := ' ';
Набяром другі варыянт уводу: G 235.98 100
Другі варыянт выкліча памылку ўводу, бо для пераменнай I тыпу Real уводзіцца значэнне тыпу Char.
Паколькі інфармацыя пападае ў буфер уводу, то калі ў праграме ёсць некалькі Read, даныя для кожнага ўводзяцца патокам, і іх можна набіраць у адным радку да яго заканчэння.
Напрыклад, няхай A, B – Integer, C, D – Real. Разгледзім фрагмент уводу:
Read(A, B); Read(C, D);
Набіраем значэнні для ўводу адзін за другім без пераходу на новы радок: 1875 34 2.62 1.54E+01 <Enter>. Аднак пасля кожнага ліку можна націскаць <Enter>.
Працэдура ўводу Readln аналагічна Read, за выключэннем таго, што пасля счытвання апошняга ў спісе значэння для апошняй пераменнай адбываецца пераход курсора на наступны радок. Аператар Readln(fv, x1, …, xn) эквівалентны аператарам Read(fv, x1); Read(fv, x2); …; Readln(fv, xn).
Фактычна інфармацыя ідзе ў буфер уводу, а затым адлюстроўваецца на экране.
Калі ідзе чытанне з Input ці з тэкставага файла, які назначаецца на экран, уводзіцца адзін радок уваходнага тэксту за адну аперацыю. Радок запамінаецца ва ўнутраным буферы тэкставага файла, і калі радок чытаецца, гэты буфер выкарыстоўваецца як уваходная крыніца. Масівы ўводзяцца паэлементна, запісы – па палях. Увод мностваў не прадугледжаны.