Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Тэкставыя стандартныя файлы

Знаёмства з файлавай сістэмай

У алгарытмічных мовах выкарыстоўваецца тэрмін «файл» для выз­на­чэн­ня спецыяльна арганізаванай паслядоўнасці кампанентаў аднаго і та­го ж ты­пу, парадак чаргавання якіх вызначаецца самой паслядоўнасцю.

У любы момант даступны толькі адзін кампанент файла. Іншыя да­ступ­ны шляхам прагляду файла. Колькасць кампанентаў, якую называем даў­жы­нёй файла, пры апісанні файла ў праграме не фіксуецца. Файл, які не ўтрым­лі­вае ніводнага кампанента, называецца пустым.

Над файлам можна выконваць два яўныя дзеянні:

· прагляд файла (з пачатку ў канец); пры гэтым у любы момант да­ступ­ны толькі адзін кампанент файла. У час прагляду файла забараняец­ца змя­няць значэнні кампанентаў;

· стварэнне файла, якое атрымліваецца ў выніку дабаўлення новых кам­па­нен­таў у канец першапачатковага пустога файла.

Усе астатнія дзеянні над файламі ёсць кампазіцыя яго прагляду і ства­рэн­ня.

Для паслядоўных файлаў працэсы стварэння і прагляду файлаў не мо­гуць адвольна чаргавацца. Гэта чаргаванне стала магчымым для файлаў з пра­мым доступам.

Паслядоўны доступ – асноўная ўласцівасць усіх прылад з механічным пе­ра­мяш­чэн­нем. Многае, што тычыцца файла, звязана са складанасцю рэ­а­лі­за­цыі яго на вылічальнай машыне. Для захавання файла прыцягва­юць за­па­мі­нальныя прылады (ЗП). Некаторыя ЗП на самай справе дапус­каюць то­ль­кі паслядоўны доступ да інфармацыі, якая знаходзіцца на іх. Гэта ты­чыц­ца прынтэра, дысплея. Але ж і на дысках кожная асобная да­рожка – пры­ла­да з паслядоўным доступам.

Прамы доступ – паслядоўны доступ, але ў двухмернай прасторы.

Файлавы тып

Файлавы тып – гэта «акно ў свет» для праграмы на мове Pascal. Пры да­па­мо­зе файлавай сістэмы праграмай здзяйсняецца ўвесь увод і вывад ін­фар­ма­цыі.

Файл – гэта спецыяльна арганізаваная паслядоўнасць даных, раз­мер­ка­ва­ных па-за рабочай памяццю праграмы (на ЗП).

Некаторыя файлы могуць толькі прымаць інфармацыю (напрыклад, пры­ла­ды друку), некаторыя – толькі выдаваць інфармацыю (напрыклад, кла­ві­я­ту­ра), многія і прымаць, і выдаваць. Гэтая ўласцівасць дыктуецца кан­с­т­рук­цы­яй знешніх прылад.

Вызначаючы файлы ў праграме, мы можам пры іх дапамозе зносіцца з перыферыяй ПК і ў тым ліку накопліваць даныя, каб пазней звяртацца да іх. Файлавыя тыпы мовы Pascal адрозніваюцца толькі тыпамі даных, якія змяшчаюцца ў іх.

Тэкставыя файлы – гэта файлы, якія будуюцца з ASCII кодаў сім­ва­лаў (разам з кіруючымі кодамі). Яны арганізуюцца па радках, утрым­лі­ваюць ко­ды #13=^М і #10=^J і абавязкова спецыяльны код, які назы­ва­ец­ца канцом фай­ла (код #26=^Z). Асноўная ўласцівасць такіх файлаў у тым, што яны мо­гуць быць створаны і праграмным шляхам, і ў нейкім тэкставым рэ­дак­та­ры.

Файлы з тыпам – кампанентныя файлы. У адрозненне ад тэкставых фай­лаў, файлы з тыпам будуюцца з машынных уяўленняў даных наперад аб’яўленага тыпу. Яны захоўваюць даныя ў тым жа выглядзе, што і ў аператыўнай па­мя­ці ПК. Значыць, асноўная ўласцівасць такіх файлаў у тым, што яны не мо­гуць быць створаны непраграмным шляхам. Такія файлы маюць справу з данымі наперад аб’яўленага тыпу.

Нетыпізаваныя файлы маюць справу з адвольнымі наборамі байтаў не­за­леж­на ад іх структуры і прыроды.

Пры дапамозе файлавых тыпаў вызначаюць файлавыя пераменныя, якія маюць адну ўласцівасць: яны не могуць удзельнічаць у аператарах на­дан­ня значэння.

Тэкставыя стандартныя файлы

У мове 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 ці з тэкставага файла, які назначаецца на эк­ран, уводзіцца адзін радок уваходнага тэксту за адну аперацыю. Радок за­па­мі­на­ец­ца ва ўнутраным буферы тэкставага файла, і калі радок чыта­ецца, гэ­ты буфер выкарыстоўваецца як уваходная крыніца. Масівы ўводзяцца паэлементна, запісы – па палях. Увод мностваў не прадугледжаны.

Вывад даных розных тыпаў

Працэдура запісу Write выконвае вывад даных у радок і не закрывае яго, але на дысплеі, калі дайшлі да мяжы, радок разрываецца і ёсць пераход на наступны радок. Калі гэта быў апошні радок экрана, то адбываецца зрух (прагортка) экрана. Вывад можа ісці ў бесфарматным варыянце ці ў фар­мат­ным. У аператарах вываду

Write(y1, …, yn); Writeln(y1, …, yn);

параметры y1, …, yn могуць мець тры варыянты запісу:

Е (бесфарматны вывад)

Е:F (фарматны вывад)

Е:F:d (фарматны вывад толькі для сапраўдных даных!).

Тут Е, F, d – выразы. Е – той выраз, што выводзім (просты вы­па­дак – імя пераменнай дазволенага тыпу). Цэлалікавы выраз F паказвае, ко­ль­кі пазіцый можа заняць Е (значыць, агульная шырыня поля). Цэлалікавы вы­раз d паказвае, колькі пазіцый у полі F стаіць пасля кропкі. Для ад­люс­т­ра­ван­ня чарговага значэння Е пры бесфарматным вывадзе на экране ці прын­тэ­ры бярэцца некаторы памер экрана па змаўчанні ў залежнасці ад ты­пу выразу Е. Выраз Е належыць да наступнага тыпу: цэлалікавы, сап­раў­д­ны, Char, String, Boolean. Для масіваў неабходна арганізаваць іх па­э­ле­мен­т­ны вывад, запісы выводзяцца па палях. Вывад мностваў не пра­дуг­лед­жа­ны.

Вывад сімвалаў

Сімвал займае адну чарговую пазіцыю ў бесфарматным варыянце.

VAR c: Char;

c:='a';

Write(c);Writeln; {вынік Þ a}

Write(c, c, c); {вынік Þ aaa}

У бесфарматным варыянце фармат задаецца канструкцыяй Е: F, дзе Е – той выраз, што выводзім (просты выпадак – імя пераменнай даз­во­ле­на­га тыпу), F – цэлалікавы выраз. Калі F – цэлае дадатнае значэнне, тады інфар­ма­цыя прыціскаецца да правага краю поля даўжыні F.

Write(c:3);

Writeln(c:3, c:4, c:5);

{вынік: ||a||a

A



<== предыдущая лекция | следующая лекция ==>
Технология приготовления заправочных супов. | Методические указания к выполнению
Поделиться с друзьями:


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 322 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

2484 - | 2299 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.