Учебное пособие Самара 2015 + 004. 43 Ббк 32. 973 Н 19
Download 1.98 Mb.
|
Lekcii AiSD 2015
Bcnomozamennnuie QyHKuHii:
FILE* fopen(char* name, char* code) — OTK]3bITHé Marina (pac— CMOT]3 HH BI›IIII . int fclose(FILE* file) — 3I1K]3bITHé II$JJII1. int access(char* name, int n) — n]3oBepKa Marina; per M H]3o- Bé]3Kii OnpeaealléTCs apryMeHTOM H, n = — n]3OBé]3KlI Ha cy ecTBO- BllHHe, 1 — HH BhIHOJIHIIéMOCTh, 2 — HH 3IInrics, 4 — HH UTéHHe, 6 — HH 3IIHHCh H UTéHHe, 7 — HU 3I1HHCI›, 9TéHHé H BI›IHOJIHIIéMOCTh H T.,Q. ]3H ycneIIIHOM 3l1Bé]3IIIéHiiii QyHKuHII BO3B]3I1uitléT . int fileno(FILE* file) — BO3B]3I1IIJIIéT IJéJIOUHGJIéHHhI H,QéHTH- QHKtlTO]3 (handler) Marina. DTa QyHKuHll o6écneUHBlléT CBII3h oToro n@éHTH§iHKaTOpa H yKasiITéJIII HH THH FILE. eDOUHcJIéHHI›I H,QéH- THQHKIITO]3 Heo6xop v pns cnepyioiiieii QyHKuHii. long filelength(int handle) — BO3B]3IIiiiIIéT ,QniiHy QaiiJIIl B 6II$JTIIX. 3HtlKOBI›I THH long nosBOJIIIéT cOs,QiIBtlTI› Qtl JII›I QJIHHO He 6onee 2 F6aiiT. int fseek(FILE* file, long pos, int sign) — ne]3éMéIIIéHHé TeKy- IlIé HO3HIJHH 3iIHHCH/GUHThIBiIHHII B QIIiiJIé B TouKy, yKasI›IBaeMyio apryMeHTOM O s, OTG U T BI›IHOJIHIIéTCII OT HtlUana Fianna, eGnH apry- MéHT siqn =, OT KOHIJII Marina npri siqn = 2, OT Texyiiieii nosri— inn npri siqn = 1. long ftell(FILE* file) — BO3B]3I1iiIIIéT TeKyiiiyio nosHIJHIO B Qllii- we. DTa i]iyHKuHII Honé3Htl Qcs npepsIqyiiieii. int rewind(FILE* file) — ne]3éMéIIJéHHé TeKy en nO3HL(HH B HIV- UIIJIO II SHH. int rename(char* old name, char* new namé — Hé]3éHMéHOBl1- HH II HH. int unlink(char* name) — yuauéHHé Marina. &yHKuHii zanucu7c•iuP bI8aHHR. int getc(FILE* file) — cUHThIBlIHHé CHMBOJIa (6ailTII , HéCMOT]3II HH TO, CTO BO3B]3 tIIJi1 T 3HI1H HH THHI1 i FI L . int getw(FILE* file) — CUHThIBflHHé IléJIOFO UHCJIII int putc(int c, FILE* file) — 3tlHHCb CHMBOJIII int fputs(const char* s, FILE* filé) — sanncs cTpoxn char* fgets(char* s, int n, FILE* file) — CUHTbIBIIHHé CT]3OKH 69 длиной п—1 символ int fread(void* block, size t size, size t items, FILE* file) считывание из файла в блок памяти, адресуемый указателем b1ссk, данных в количестве iLems элементов, каждый элемент размером siz е байт. Указатель на тип vo id используется пото— му, что неизвестен заранее точный тип считываемых данных. siz е L — один из переименованных целых типов (для 32- разрядных систем — часто беззнаковый целый), определён в заго- ловочном файле sL dde I . h. Аргументы sіz е и i 4ems — взаи— мозаменяемые, например, можно прочитать 1 блок данных раз- мером 1000 байт или 1000 блоков размером 1 байт. size t fwrite(const void* block, size t size, size t items, FILE* file) — запись блока в файл. Блок помечен как константный, чтот- бы внутри функции его нельзя было модифицировать. Кроме этих функций запись в текстовый файл может вы- полняться функцией fprin L f, а считывание функцией fscan f . Обе эти функции относятся к функциям с переменным числом аргументов, рассмотрение которых выходит за рамки на- стоящего курса. Вопросы и задания для самоконтроля Что такое файл? К какой группе структур данных относятся файлы? Какие действия необходимо выполнить для работы с файлом? Различаются ли файлы по типам? Как в программах устанавливается связь с файлами? Какие способы организации связи с файлами вам из- вестны? Какие операции можно выполнять над файлами? Как открыть файл для записи? Как открыть файл для считывания? Какая функция позволяет узнать длину файла? Как проверить, можно ли произвести запись в выбран- ный файл? 70
Можно ли считать данные из произвольного места в файле? Если да, то как это сделать? Можно ли перемещаться по файлу? Если да, то с по- мощью какой функции? Чем отличается запись действительных чисел в тексто- вый и двоичный файлы? Требуется создать файл размером 8 Гбайт. Можно ли для работы с таким файлом использовать тип данных 1onq? Как получить размер файла? Можно ли в файл записывать разнотипную информа- U ю? Как удалить содержимое существующего файла? Как обеспечить связь между файлами и функциями? 71
Очереди Все линейные динамические структуры данных могут быть отнесены к сппсковыж структурам. Именно такими явля- ются разные виды очередей и стеки. Динамическими эти струк- туры считаются по той причине, что их размер в процессе работы может изменяться — список может удлиняться или укорачиваться, а элементы структур (включая самые первые) создаются и раз- рушаются при помощи операций или процедур динамического выделения и освобождения памяти. Начнём рассмотрение этих структур данных с наиболее про- стых, т.е. с очередей. В общем случае, очередь — это линейный список, доступ к элементам которого происходит по принципу FIFO (First In and First Out — первым пришел и первым ушел). Для очереди характерны две операции — занесение элемента в очередь и извлечение (считывание) элемента из очереди. В про- стой очереди для работы с данными доступны две позиции — на- ч‹zла (из этой позиции происходит извлечение) и конец (в эту по- зицию заносится входящий элемент) или « сoлoвп» и «хвост». Произвольный доступ к элементам, в отличии от массивов, фор- мально ne допускается. Операция извлечения (считывания) формально является разрушающей. Это означает, что считанные данные становятся недоступными. Возможно, явного разрушения (уничтожения) данных и не происходит, но к ним нет доступа, используя стандартные операции работы с очередью. Области применения очередей могут быть разделены на две группы системное применение и прикладное. К примене- нию очередей в спсшежпых целях относятся: диспетчеризация задач операционной системой; буферизация ввода/вывода; Прикладное применение: моделирование процессов (например, систем массового обслуживания); использование очередей как вспомогательных структур данных в каких-либо алгоритмах (например, при поиске в графах). 72 ДНИМ из приме]ЗОВ Очереди ЯВЛRёТСІІ мaшиHa Тьюринга. ОЛёё П]ЭОСТЬІМ МёХllНИЧёСКИМ П]ЭИМё]ЭОМ ЯВЛЯёТGя Труба с Теку- IIIëÈ TOJIЬKO В O@HOM НапраВлёННН ЖИдкОСТЬЮ. Классификация очередей. Ухо архитектуре Очерё@Н @ёЈІЯТ- СЯ HIS ЛННёЙНЬІё И КОЛЬЦёВЬІё (ЦНКЛИЧёGКНё). ПtЭ КСlЛичёсТВу позН- ЦНЙ ЗІІПНСН Н СЧНТЫВІІНИЯ — НІ1 Н]ЗОСТЬІё Н UpHOp НАХРЕН Ы . Й]ЗОМё TOгo cyiiiecTByeT сНегіиdЛЬНЬlЙ ВНД Очереди ЬвухвхоЬовая оче- реЬь нпн Ьек (DEQue — Double Ended Queue; queue — очередь). На пракТНКё Очереди MoгyT реалиЗОВЬІВllТЬСя п]ЗН HOMOIIJH оЬномерных массивов нян связные списков, что хорошо иллю- CTpHpyeT раsличНё Между noгичecK HM Н QlfзпческпШ уроВНЯМН cTpyKTyp даННЬІХ (MIICCHB HIS изичёСКоМ ypoBHë ЯBЛRëTGR оче]Зё- ДЬЮ HIS JIOFHЧëCKOM . Нгіже іІ]ЭИВёД НЫ П]ЭИМё]ЭЬІ П]3oueayp saHëCëHHЯ И НЗВЛёЧёННЯ ДЛЯ ЛИНё$ЈНО$Ј ОЧё]ЗёДН HIS ЯЗЫКІІХ tlCKdЛb Н THE . ПporpaMMI1 ]ЗІІбоТЬІ С ЈІИНё$ЈНОЄ OUë]3ë@hЮ НІ1 fl3blKë ІІСКбЛЬ. Programm Queue Test; var q:array[0..30] of Integer; (* LxodaebHBx maC- CUB, HP KOTO OM U CT OUTCS One eQb *) Download 1.98 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling