Енгізу/шығару функциялары. енгізу/шығару стандартты кітапханасы


Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
ҚАЗАҚ МЕМЛЕКЕТТІК ҚЫЗДАР ПЕДАГОГИКА ИНСТИТУТЫ
Информатика және қолданбалы математика кафедрасы
Тақырыбы : Енгізу/шығару функциялары. Енгізу/шығару стандартты кітапханасы
Орындаған: 050602 2-курс студенті Отарбаева А.
Тексерген: аға оқытушы Мүсіралиев Ж. А.
Алматы 2007ж
Мазмұны
Кіріспе
I. Енгізу/шығару құралдары.
1. 1. Стандартты кітапханаға сілтеме.
1. 2. GETCHAR және PUTCHAR функциялары - стандартты енгізу мен шығару.
1. 3. Форматты шығару - PRINTF функциясы.
1. 4. Форматты енгізілу - SCANF функциясы.
1. 5. Жадыдағы форматты түрлену.
1. 6. Қателерді өңдеу.
1. 7. Символдың түрлері мен түрленуін тексеру. .
II. Қорытынды
Пайдаланған әдебиеттер
Кіріспе
Қазіргі уақытта ғылыми техниканың даму жетістіктеріне сай, алдыңғы қатарлы ЭЕМ өміріміздің әр түрлі саласында кеңінен қолданылуда.
ЭЕМ-сымен арақатынас қалыптастыруда керекті алгоритмдік тілдер: Фортран, Паскаль, Бейсик, Си және т. б. компьютерде есептерді белгілеп, нәтижесін шығаруға бейімделген.
Осы курстық жұмыстың басты мақсаты: Си тілінде программаларды орындау барысында енгізу/шығару құралдары арқылы жеңіл және тиімді программа құруды үйренуге, күрделі есептер орындауда тәжірибе жинақтауға негізделген.
Енгізу/шығару құралдары С тілінің негізгі құрамы болып табылмайды. Бұл тарауда «енгізу/шығару стандартты кітапханасы» туралы баяндалады, яғни «С» программасының стандартты енгізу/шығару жүйесін қамтамасыз етуге арналған. Бұл функциялар программалық интерфейстің қолайлығына арналған, бірақ тек қазіргі заманға операциялық жүйелерді қамтамасыз ететін операцияларды бейнелейді.
Бұл жерде енгізу/шығару кітапханасын толық сипаттауға тырысамыз, өзінің операциялық ортасымен байланысатын С программасының негізін көрсетеміз.
Стандартты кітапханаға сілтеме .
Стандартты кітапхананың функциясына қатысты әрбір бастапқы файлдың басында мынадай жол болуы керек:
#INCLUDE <STDIO. H> - <STDIO. H> файлында енгізу/шығару кітапханасында қолданылатын кейбір макростар мен айнымалылар анықталады. Қарапайым тырнақшаның орнына бұрыштық жақшаның қолданылуы - бұл компиляторға стандартты информацияның тақырыбынан тұратын, анықтамалардан осы файлды ізде деген нұсқау (UNIX жүйесінде әдетте LUSRLINELUDE) .
Сонымен қоса, программаны жүктеу барысында нақты кітапхананы көрсету керек болады, PDP-11 UNIX жүйесіне мысалы, программа компиляциясының командасы мынадай түрде болушы еді: СС бастапқы файлдар және т. б. мен -LS, бұл жерде -LS стандартты кітапхананың жүктелуін көрсетеді.
GETCHAR және PUTCHAR функциялары - стандартты енгізу мен шығару.
Енгізудің ең қарапайым механизмі бұл әдетте қолданушы терминалынан GETCHAR функциясының көмегімен бір рет «стандартты енгізуден» бір символдың оқылуымен қорытындыланады.
Putchar() функциясы бір символды келесі жолға өтпей шығаруды қамтамасыз етеді. С тілі қолданылатын көптеген жерлерде терминал < : белгісі арқылы кейбір файлдармен ауыстырылуы мүмкін; егер PROG программасы GETCHAR функциясын қолданса, онда жолдық командамен ауыстырылуы мүмкін.
PROG<INFILE командасында PROG программасы терминалдан емес, INFILE файлынан оқиды дегенді білдіреді. Енгізулердің ауыстырылуы PROG программасының өзі өзгерістерді байқамайтындай етіліп жүреді, көп жағдайда ”<INFILE>” жолы ARGV аргументтерінің командалық жолына қосылмайды. Егер шығару басқа программадан ағымдық (PIPE) механизмінің көмегімен түссе, онда енгізуді қайта жіберу білінбей кетеді; командалық жол OTHERPROG \! PROG екі программаны қуады: OTHERPROG пен PROG.
GETCHAR функциясы файлдың соңына түсіп, қандай енгізуді есептесе де EOF мәнін қайтарады. Стандартты кітапхана EOF мәніне символдық константаны 1-ге тең деп береді, тексерулерді EOF терминдерінде жазған дұрыс.
Шығаруды 'с' символын «стандартты енгізуге» кірістіретін, термин ретінде саналатын PUTCHAR© функциясының көмегімен жүзеге асыруға болады. Шығаруды белгілі бір файлға >: белгісінің көмегімен сілтеуге болады, егер PROG программасы PUTCHAR функциясын қолданса, онда PROG>OUTFILE командалық жолы терминалға емес, OUTFILE файлының стандартты шығаруының жазбасына әкеліп соғады. UNIX жүйесінде сонымен қатар ағымдық механизмді де қолдануға болады. PROG \! ANOTHERPROG жолы PROG стандартты шығаруын ANOTHERPROG стандартты енгізуіне орналастырады. Бұл жағдайда да PROG өзгертулерді байқамайды.
PRINTF функциясымен жүзеге асатын шығару, ол да стандартты шығаруға түседі, PUTCHAR мен PRINTF функцияларына жолдау ұзарады.
Таңғаларлықтай программалардың саны тек қана бір енгізу арнасынан тек бір ғана шығару арнасына жазылады; мұндай программаларға GETCHAR, PUTCHAR және PRINTF функцияларының көмегімен енгізу және шығару өте қолайлы, бастапқы жағдайда жеткілікті болуы да мүмкін. Бұл енгізуге және шығаруға арналған файлдарды көрсетуге мүмкіндік болғанда дұрыс. Мысалы, LOWER программасын қарастырайық, ол бас әріптерді кіші әріптерге айналдырады:
#INCLUDE <STDIO. H>
MAIN() /* CONVERT INPUT TO LOWER CASE */
{ INT C;
WHILE ((C = GETCHAR() ) != EOF) PUTCHAR(ISUPPER© ? TOLOWER© : C) ;
}
ISUPPER және TOLOWER функциялары шынымен де STDIO. H-та анықталған макростар болып табылады. ISUPPER макросы аргумент жоғарғы регистрлі әріп екенін тексереді және нольдік емес мәнге қайтарады, егер де ол солай болса нольдерді де қайтарады. TOLOWER макросы жоғарғы регистрлі әріпті сол әріптің төменгі регистріне айналдырады. Бұл функциялар белгілі бір машинада іске асырылатынына қарамастан, қызметтері бірдей.
Егер бірнеше файлдарды түрлендіру керек болса, онда бұл файлдарды UNIX жүйесінің САТ утилитіне ұқсас программамен жинауға болады,
CAT FILE1 FILE2 . . . \! LOWER>OUTPUT және сонымен қатар программадан бұл файлдарға қалай қатынасуға болады деген сұрақ тудырмайды.
Сонымен қатар, енгізу/шығару стандартты кітапханасында GETCHAR және PUTCHAR функциялары шынымен де макростар болулары мүмкін еді. Бұл функцияларға қатысты әр символды тексеруінің қатарласып шығындануынан сақтайды.
Форматты шығару - PRINTF функциясы.
PRINTF шығару және SCANF енгізу функциялары сандық үлкендіктерді символдық көрсетілімдерге және керісінше түрлендіреді. Сонымен қатар олар форматты жолдарды генерациялайды және интерпретирациялайды. PRINTF(CONTROL, ARG1, ARG2, . . . ) функциясы түрлендіреді, пішімін анықтайды және өзінің аргументтерін CONTROL жолының басқаруымен стандартты шығаруға басады. Басқарушы жол объектінің екі типінен тұрады: қарапайым символдар, ол жай ғана шығу арнасына көшіріледі және түрлену спецификациясы, олардың әрқайсысы түрлендіруді және келесі PRINTF аргументінің баспаға шығуын шақырады.
Әрбір түрлендіру спецификациясы % символынан басталып, түрлендіру символымен аяқталады. % символы мен түрлендіру символдарының арасында: алу амалы орналасуы мүмкін, ол аргументтің сол жағы бойынша пішімделуін көрсетеді.
Өрістің минимальді енін көрсететін - сандар жолы. Түрленген сан баспада болмаған жағдайда, сол өрістің ені бойынша шығады, егер керек болса одан үлкен ені де жарайды. Егер түрленген аргумент өрістің енінен аз символға ие болса, онда ол осы еніне дейін толтырушы символдармен сол жағынан толтырылады. Толтырушы символ болып, әдетте бос орын саналады, егер өрістің ені нольмен басқарылса, онда ол символ - ноль болады.
Сандар жолынан кейінгі өрістің енін анықтаушы, нүкте болып саналады. Баспаға шығатын символдардың максимальды санын көрсететін сандар жолы немесе оң жағынан басылатын сандардың FLOAT немесе DOUBLE типтері үшін айнымалылары:
Берілгендердің элементіне сәйкес L ұзындықты модификатор LONG типіне ие, ал INT типіне сәйкес келмейді.
Төменде түрлену символдары мен олардың мағыналары берілген:
D - аргумент ондық түрге айналады.
О - аргумент белгісіз сегіздік формаға түрленеді.
Х - аргумент белгісіз он алтылық формаға түрленеді.
U - аргумент белгісіз ондық формаға түрленеді.
С - аргумент жеке символ ретінде қарастырылады.
S - аргумент жол болып табылады, жолдың символдары нольдік символға жеткенше басыла береді, әйтпесе дәлділік спецификациясында көрсетілген символдар саны басылмайды.
Е - FLOAT немесе DOUBLE типінің айнымалысы ретінде қарастырылатын аргумент, жолдың ұзындығы N дәлділікпен анықталатындай, ондық формаға [-] M. E[+-] XX түрінде айналады. Үнсіз келісім бойынша, дәлділік 6-ға тең.
F - FLOAT немесе DOUBLE типтерінің айнымалысы ретінде қарастырылатын аргумент, жолдың ұзындығы N дәлділікпен анықталатындай, ондық формаға [-] M. E[+-] XX түрінде айналады. Үнсіз келісім бойынша, дәлділік 6-ға тең, , бұл дәлділік F форматында берілетін сандардың санын көрсетпейтіндігін айта кеткен жөн.
G - Қысқалағана байланысты %E немесе %F форматтырының бірі қолданылады, есептелмейтін нольдер жазылмайды.
Егер % кейінгі символ түрлену символы болмаса, онда сол символдың өзі басылады; бұдан шығатыны % символын %% деп көрсетіп, баспаға шығаруға болады.
Келесі кесте “HELLO, WORLD” (12 символ) баспасына әр түрлі спецификациялардың әсерін көрсетеді. Біз әр өрістің жан-жағына қос нүктелер қойдық, өйткені олардың аралығын көрсету керекпіз:
:%10S: :HELLO, WORLD:
:%10-S: :HELLO, WORLD:
:%20S: : HELLO, WORLD:
:%-20S: :HELLO, WORLD :
:%20. 10S: : HELLO, WOR:
:%-20. 10S: :HELLO, WOR :
:%. 10S: :HELLO, WOR:
Ескерту: PRINTF өзінің бірінші аргументін келесі аргументтердің саны мен типін анықтау үшін қолданады. Егер де аргументтердің саны жеткіліксіз болса, онда сіз қате нәтиже аласыз.
Форматты енгізілу - SCANF функциясы.
SCANF енгізу функциясы PRINTF функциясының баламасы болып табылады, және оның кері процесстерін жүзеге асырады.
SCANF(CONTROL, ARG1, ARG2, . . . ) стандартты енгізудің символдарын оқиды, CONTROL аргументінде көрсетілген пішімдерге сәйкес интерпретирациялайды және нәтижелерді басқа аргументтерге орналастырады. Басқарушы аргумент төменірек көрсетілген; нұсқауыш болатын басқа аргументтер түрленген енгізуді қайда орналастыру керек екендігін анықтайды.
Енгізілген тізбектерді интерпретациялайтын, басқарушы жол, әдетте түрлендіру спецификацияларына ие. Басқарушы жолдың құрамында: еленбейтін бос орындар, табуляциялар немесе жаңа жолдың символдары болуы мүмкін.
Түрлену символы енгізу өрісінің интерпретациясын анықтайды; «с» тілінің семантикасының мәнін шақырудағы басты талаптарға сәйкес, аргумент нұсқауыш болуы тиіс. Келесі түрлендіру символдары жіберіледі:
D - бүтін ондық сан шығарылуы тиіс; сәйкес келетін аргумент бүтінге нұсқау болуы керек.
О - бүтін сегіздік сан шығарылуы тиіс; сәйкес келетін аргумент бүтінге нұсқау болуы керек.
Х - бүтін он алтылық сан шығарылуы тиіс; сәйкес келетін аргумент бүтінге нұсқау болуы керек.
Н - SHORT типті бүтін шығуы тиіс; сәйкес келетін аргумент бүтін SHORT типіне нұсқау болуы керек.
С - Бөлек символ күтіледі; сәйкес келетін аргумент символға нұсқау болуы керек; келесі енгізілетін символ көрсетілген орынға ауыстырылады.
S - Символдық жол күтіледі; сәйкес келетін аргумент символдық нұсқау болуы керек.
F - Жылжымалы нүктелі сан күтіледі; сәйкес келетін аргумент FLOAT типті айнымалыға нұсқау болуы керек.
Е - Е түрлену символы F символына синоним болып табылады.
D, О және Х түрлену символдарының алдында, аргументтер тізімінде INT типті емес, LONG типті айнымалыға нұсқау болтын, L болуы мүмкін. Балама ретінде, L - Е және F түрлену символдарының тұру мүмкіндігі бар, айта кететін жайт, аргументтер тізімінде FLOAT типіне емес, DOUBLE типінің айнымалысына нұсқау болуы керек.
Мысалы, INT I жолдауы;
FLOAT X;
CHAR NAME[50] ;
SCANF(“&D %F %S”, &I, &X, NAME) ;
жолымен енгізгенде 25 54. 32E-1 THOMPSON І-ге 25, X мәнін - 5. 432 мен NAME мәндерін - «THOMPSON» жолдарын меншіктейді, сәйкесінше \ 0 символымен аяқталады. Бұл үш өрісті бос жолдармен, табуляциялармен және жаңа жолдың символдарымен қалауымызша бөлуге болады.
INT I жолдауы;
FLOAT X;
CHAR NAME[50] ;
SCANF(“%2D %F %*D %2S”, &I, &X, NAME) ;
56789 0123 45A72 енгізгенде І 56, X - 789. 0 мәнін меншіктейді, 0123 өткізіп, NAME үшін «45» жолын көшіреді, келесі кез келген енгізу процедурасына жолдау барысында қарастырылу А әрпінен басталады. Бұл екі мысалда да NAME нұсқауыш болып тұр, сондықтан оның алдына & белгісін қою керек.
Келесі мысал ретінде элементар калькуляторды алып, келесі түрлену үшін SCANF функциясын алайық:
#INCLUDE <STDIO. H>
MAIN() /* RUDIMENTARY DESK CALCULATOR */
{ DOUBLE SUM, V;
SUM =0;
WHILE (SCANF(“%LF”, &V) !=EOF) PRINTF(“\T%. 2F\N”, SUM += V) ;
}
SCANF функциясының орындалуы оның басқарушы жолы өшірілген кезде немесе енгізу элементінің біреуі басқару спецификациясымен сәйкес келмеген жағдайда тоқтатылады. Өзінің мәні ретінде ол сәйкес келетін және енгізу элементтерінің дұрыс меншіктелу санын береді. Бұл сан енгізу элементтерінің табылған санын анықтау үшін қолданылуы мүмкін, шығу барысында файлдың соңына EOF қайтарылады. Келесі SCANF жолдауындағы іздеу соңғы енгізілген символдан кейін орындалады.
Соңғы ескерту: SCANF функциясының аргументтері нұсқауыштар болу керек. Көбінесе қателіктер жазу барысында орындалады:
SCANF(“%D”, &N) орнына
SCANF(“%D”, N) ;
Жадыдағы форматты түрлену.
SCANF және PRINTF функцияларынан функциялары сияқты түрлендірулер жүргізетін, бірақ файлмен емес жолмен жұмыс істейтін SSCANF және SPRINTF функциялары туады. Бұл файлдарға жолдау мына түрде жүреді:
SPRINTF(STRING, CONTROL, ARG1, ARG2, . . . ) SSCANF(STRING, CONTROL, ARG1, ARG2, . . . ) Бұрынғыдай да, SPRINTF өзінің аргументтерін түрлендіреді: ARG1, ARG2 және т. б. CONTROL үшін көрсетілген форматқа сәйкес, нәтижелерді стандартты шығаруға емес, STRING жолына көшіреді. Әрине, нәтижені қабылдау үшін STRING жолы үлкен болуы қажет. Мысалы, NAME - бұл символды массив, ал N - бүтін, онда
SPRINTF(NAME, “TEMP%D”, N) ;
NAME үшін TEMPNNN жолын жасайды, мұнда NNN - N мәні. SSCANF функциясы кері түрлендірулер жүргізеді - ол CONTROL аргументіндегі форматқа сәйкес STRING жолын қарастырады және қорытынды нәтижелерді ARG1, ARG2 аргументтеріне көшіреді және т. б., бұл аргументтер нұсқауыштар болуы керек. Жолдаудың нәтижесінде
SCANF(NAME, “TEMP%D”, &N) ;
N айнымалысы сандар жолының мәнін алады.
Файлдарға кіру мүмкіндігі.
Осыған дейін жазылған программаларды стандартты енгізуден оқып стандартты шығаруғы жаздық.
Енгізу-шығарудағы келесі қадам, алдын-ала программамен байланыспаған файлмен жұмыс істейтін программаны жазу болып табылады. Осындай операцияларда қажеттілікті керек ететін программалардың бірі, САТ программасы болып табылады, ол стандартты шығаруға бірнеше атаулы программаларды біріктіреді. САТ программасы, программа үшін әмбебап енгізу жинақтаушы ретінде, терминалға файлдарды шығару үшін де қолданылады, олар файлдарға аты бойынша қатынай алмайды. Мысалы,
CAT X. C. Y. C командасы X. C және Y. C файлдарының құрамын стандартты шығаруға енгізеді.
Енді біз САТ программасын файл конкатенациясы үшін жаза аламыз.
Бұл жерде қолданылатын негізгі схема басқа көптеген программалар үшін өте қолайлы, егер командалық жолда аргументтер болса, онда олар кезекпен өңделеді. Егер мұндай аргументтер жоқ болса, онда стандартты енгізу өңделеді.
#INCLUDE <STDIO. H>
MAIN(ARGC, ARGV)
/*CAT: CONCATENATE FILES*/ INT ARGC;
CHAR *ARGV[] ;
{ FILE *FP, *FOPEN() ;
IF(ARGC==1) /*NO ARGS; COPY STANDARD INPUT*/ FILECOPY(STDIN) ;
ELSE WHILE (--ARGC > 0) IF ((FP=FOPEN(*++ARGV, ”R”) ) ==NULL) \( PRINTF(“CAT:CAN'T OPEN %\N”, *ARGV) ;
BREAK;
{ ELSE \( FILECOPY(FP) ;
FCLOSE(FP) ;
}
{ FILECOPY(FP) /*COPY FILE FP TO STANDARD OUTPUT*/ FILE *FP;
} INT C;
WHILE ((C=GETC(FP) ) !=EOF) PUTC(C, STDOUT) ;
}
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz