- 1. Символдарды енгізу-шығару функциялары
- 2. Сөз тіркестерін өңдеу
- 3. Сөз тіркестерін енгізу-шығару функциялары
- 4. Сөз тіркестерін өңдейтін басқа функциялар
- 1. Символдарды енгізу-шығару функциялары
- Символдарды біртіндеп енгізу-шығару үшін printf(), scanf() функцияларының %c форматы қолданылады.
- Бұлардан бөлек екі функцияны қарастырайық:
- getchar() – параметрсіз функция. Пернеден сим-волдарды бір-бірлеп енгізеді. Сөз тіркесі Enter пернесі басылғанша енгізіле береді, оған дейін оны өзгертуге болады.
- putchar(с) – с символын экранға шығарады.
- Мысалы, латын алфавиті әріптерін экранға шығару программасы төмендегідей болады:
- #include
- #include
- void main()
- {
- char z;
- clrscr();
- for(z='A';z<='Z';z++)
- putchar(z);
- getch();
- }
- Нәтижесі:
- ABCDEFGHIJKLMNOPQRSTUVWXYZ
- Ал енді осы символдарды ASCII-кодтарымен бірге шығаратын мына программаны көрейік.
- /* латын алфавиті*/
- #include
- #include
- void main()
- {
- char z;
- clrscr();
- for(z='A';z<='Z';z++)
- {
- if (z=='K' || z=='U') printf("\n");
- printf(" %c-%d ",z,z);
- }
- getch();
- }
- Программа жұмысы нәтижесі:
- A-65 B-66 C-67 D-68 E-69 F-70 G-71 H-72 I-73 J-74
- K-75 L-76 M-77 N-78 O-79 P-80 Q-81 R-82 S-83 T-84
- U-85 V-86 W-87 X-88 Y-89 Z-90
- PASCAL тілінде сөз тіркестерін өңдеу кезінде қолданылатын арнайы тип – string бар. Ал Си тілінде мұндай арнайы тип жоқ. Сөз тіркестері char типті бір өлшемді жиым ретінде қарастырылады, яғни сөз тіркесі – нөлдік байтпен аяқталатын char типті бір өлшемді жиым.
- Нөлдік байт – барлық биттері де нөлге тең байт, ол ´ \0 ´ символдық константасымен анықталады (тіркес соңы белгісі немесе нөл-терминатор). Сондықтан егер тіркесте k символ болса, онда жиымды сипаттауда k+1 элемент көрсетілуі тиіс.
- Мысалы, char a[7] деген сипаттау тіркестің 6 символдан тұратынын, ал соңғы байт нөлдік екенін білдіреді. Си тілін-дегі тіркестік (жолдық) константа – қос тырнақшаға алынған символдар жиыны. Мысалы, “Берілген тапсырма” тіркесі, оның соңына нөлдік байтты компилятор автоматты түрде өзі қосып жазады.
- Айнымалы мәні болатын сөз тіркесін сипаттау кезінде бірден көрсетуге болады, мысалы,
- char S1[10]=”123456789”, S2[]=”Болат”;
- Соңғы сөз ұзындығы тіркестің символдары саны-мен анықталады.
- Символдық жолдарды немесе тіркестерді бірнеше тәсілмен өңдеуге болады, олар-дың негізгілері:
- -Тіркестік константаларды қолдану;
- -Char типті жиымды қолдану;
- -Char типке сілтейтін нұсқауыштарды пайдалану;
- -Символдық жолдардан тұратын жиымдарды қолдану.
- Символдық константа осы жолдар жазылған жады аймағына сілтейтін нұсқауыш болып табылады.
- Символдық тіркестер жиымын беру кезін-де компилятор компьютер жадының қажетті көлемін анықтау үшін жиымды сипаттаған-да, оны тіркестік константа арқылы ини-циалдауға болады. Мысалы:
- char c[]= “определение максимального балла”;
- Әдеттегі жиым қолданылатын жағдай сияқ-ты бұл жиым аты - с осы жиымның алғашқы элементіне сілтейтін нұсқауыш болып та-былады. Мысалы:
- c = =&c[0];
- *c = =’0’;
- *(c+1) = = c[1] = = ‘n’;
- Сөз тіркестерін анықтау үшін нұсқауыш-тарды мынадай түрде сипаттауға болады:
- char *c1-“n енгізілген балл”;
- Осы сипаттауға эквивалентті болып ке-лесі сипаттау есептеледі:
- static char c1[]=”\n енгізілген балл”;
- Осы қарастырылған екі сипаттау да с1 тіркесінің нұсқауыш екенін білдіреді.
- Символдық тіркестерден тұратын жиымда-рды қарастыралық. Бұл жиымдардың әрбір тіркесі символдық жиым болып табылады.
- Мысалы, статикалық жиымның сипатталуы келе-сідей түрде жазылуы мүмкін:
- static char *m[4]={”регистр”, ”ячейка”,
- ”указатель”, ”элемент”};
- бұл жиым символдық жолдарға сілтейтін 4 нұс-қауыш болып табылады. Сонымен, символдық тір-кестер жиымдар болып табылатын болса,онда осы жиымдарға сілтейтін 4 нұсқауыш қарастырылады.
- 1-сөзге сілтейтін 1-нұсқауыш болып m[0] есептеледі;
- m[1]– 2- сөзге сілтейтін 2-нұсқауыш болып табылады, т.с.с.
- Сонымен, әрбір нұсқауыш соған сәйкес тіркес-тің немесе сөздің ең бірінші символына сілтейді.
- *m[0]==’р’; *m[1]==’я’; *m[2]==’у’; *m[3]==’э’;
3. Сөз тіркестерін енгізу-шығару функциялары - Символдар тіркесін пернелерден енгізу үшін екі стандартты функция – scanf()немесе gets() қолданылады, ал олардың прототиптері stdio.h тақырыптық файлында болады.
- Scanf( ) функциясы тіркестік айнымалылар мәнін %s форматымен енгізеді, бірақ ол тіркесті тек бірінші босорын таңбасына дейін ғана енгізе алады.
- Ал gets() функциясы арасында босорыны бар тіркестерді енгізеді, енгізу ENTER пернесімен аяқ-талады. Екі функция да тіркес соңына нөлдік байт қо-сып жазады. Оның үстіне тіркес – символдық жиым, ал жиым аты – оның компьютер жадындағы алғашқы адресіне сілтеме болғандықтан, тіркестік айнымалы атының алдына «&» символы жазылмайды.
- Бір мысал келтірейік.
- /*сөз тіркесін шығару*/
- #include
- #include
- void main()
- {
- char b[]=”Сезам, ашыл!”;
- clrscr();
- printf("%s",b);
- getch();
- }
- Мұндағы b жиымының ұзындығы 13 символ, яғни сөздер ұзындығынан 1-ге артық.
- Сөз тіркестерін шығару функциялары:
- printf(), сprintf(), puts(), cputs()
- printf() – экранға формат арқылы сөз тір-кесін шығарады;
- сprintf() – экранға printf() сияқты формат арқылы сөз тіркесін шығарады, тек олар-дың түстерін textcolor() және textback-ground() функциялары арқылы өзгертуге мүмкіндік береді;
- puts(str) – экранға сөз тіркесін шыға-рып, курсорды бірден келесі жолдың ба сына алып барады, мұндағы str – тіркес-тік константа немесе тіркестік айныма-лы. Бұлар stdio.h тақырып файлы бойынша жұмыс істейді.
- Жоғарыдағы функциялар символдық жиымды нөл-дік байтқа дейін шығарады. printf() функциясы символ тіркесі шығарылған соң, курсорды келесі жолға көшір-мейді, ол үшін арнайы формат (\n) жазылуы тиіс. Ал puts( ) функциясы символдар шығарылған соң, авто-матты түрде курсорды келесі жол басына көшіреді.
- #include
- #include
- main()
- { char str1[]= “abc”;
- char str2[]= “def\nghi\n”;
- char str3[]= “jkl”;
- puts(str1);
- puts(str2);
- puts(str3);}
- Нәтижесі:
- abc
- def
- ghi
-
- jkl
- Нәтижесі:
- abc
- def
- ghi
-
- jkl
- 4. Түстерді өзгерту
- cputs(str) – экранға сөз тіркестерін шығарып, олардың түстерін textcolor() және textbackground() функциялары арқылы өзгертуге мүмкіндік береді, conio.h тақырып файлы бойынша жұмыс істейді.
- Сөз тіркестерімен орындалатын басқа операциялар да стандартты функциялар арқылы атқарылады. Ол функциялар жұмыс істеуі үшін string.h тақырыптық файлы қажет.
- Жалпы сөз тіркестерін қолдану үшін stdlib.h немесе string.h тақырыптық файлдары қолданылады.
- Ал sputs( ) функциясы символдардың түстерін өзгертуге мүмкіндік береді. Мысалы:
- #include
- #include
- main()
- { char str1[]= “abc”;
- char str2[]= “def\nghi\n”;
- char str3[]= “jkl”;
- puts(str1); textcolor(WHITE);
- cprintf(“%s”,str2); textcolor(RED);
- puts(str3);}
- Нәтижесі:
- abc
- def
- ghi
-
- jkl
- Экрандағы символдар түстерін өзгерту үшін
- TextColor(col);
- функциясы қажет, мұндағы col – бүтін типті айнымалы, ол түс кодын береді. Түстер кодтары төмендегідей:
- Түстер Кодтары Ашық түстер Кодтары
- Қара (BLACK) 0 Қошқыл сұр (DARKGRAY) 8
- Көк (BLUE) 1 Көкшіл (DARKGRAY) 9
- Жасыл (GREEN) 2 Ақ жасыл (LIGHTBLUE) 10
- Көгілдір (CYAN) 3 Ақшыл көк (LIGHTCYAN) 11
- Қызыл (RED) 4 Қызғылт (LIGHTRED) 12
- Күлгін (MAGENTA) 5 Қызғыш (LIGHTMAGENTA) 13
- Қоңыр (BROWN) 6 Сары (YELLOW) 14
- Сұр (LIGHTGRAY) 7 Ақ (WHITE) 15
- Мыс.: TextColor(4); немесе TextColor(12);
- Түс коды орнына оның ағылшынша атын бас әріппен беруге болады. Мысалы:
- textcolor(RED); немесе textcolor(WHITE);
- Кейбір түстерді жанып-сөніп жымыңдап тұратын етуге болады, ол үшін кодқа 128 (blink) санын қосу керек. Мыс., жымыңдайтын сары түстер былай беріледі:
- TextColor(14+128); немесе TextColor(YELLOW + BLINK);
- Фон (“қағаз”) түсін өзгерту үшін мына функция қолданылады:
- textbackground(color);
- Бұл да textcolor сияқты, бірақ color тек 0 мен 7 арасында ғана өзгереді. Экранды бір түске бояу үшін осы функцияны жазған соң, экранды тазалау команда-сын орындау қажет. Мысалы: clrscr();
- 5.Сөз тіркестерімен жұмыс істейтін басқа функциялар
- 1) strlen(str) функциясы str сөз тір-кесіндегі символдар санын (соңғы нөлді есепке алмайды), яғни жолдың ұзындығын анықтайды, оның типі int, тақырыптық файлы
- 2)strcat(stroka1,stroka2) функциясы тір-кестерді біріктіру үшін қолданылады. Ол stroka1 және stroka2 тіркестерін бірік-тіріп, нәтижені stroka1 айнымалысына меншіктейді.
- Мысал. Бірнеше сөз тіркестерінің ұзындығын анықтайтын программа құру керек.
- //использование функции strlen(str)
- #include
- #include
- #include
- main ()
- {
- static char t[]=“Сведения о наших студентах.”;
- clrscr();
- printf(“%d\n”,strlen(t));
- printf(“%d\n”,strlen(“Сведения о наших студентах.”));
- printf(“%d\n”,strlen(“КазНУ им.аль-Фараби”));
- printf(“%d\n”,strlen(“”));
- getch();
- }
- Мұның нәтижесі:
- 27
- 27
- 19
- 0
- Келесі мысал:
- //strcat(str1, str2) ф-циясын пайдалану
- #include
- #include
- #include
- main ()
- {
- char str1[50]=“Изучаем язык Си, ";
- char str2[]=“скоро сдадим экзамен.";
- clrscr();
- printf("%s\n",strcat(str1,str2));
- puts(str1); // экранға шығару
- puts(strcat(“Если будем учиться хорошо, ",str2));
- getch();
- }
- Мұның нәтижесі:
- Изучаем язык Си, скоро сдадим экзамен.
- Изучаем язык Си, скоро сдадим экзамен.
- Если будем учиться хорошо, скоро сдадим экзамен.
- 3) strcmp(stroka1,stroka2) функциясы екі сөз тіркесін салыстыру үшін қолданылады. Егер олар бірдей болса, функцияның мәні 0-ге тең болады, әйтпесе ол екі тіркестің айырмасын береді. Егер stroka1 stro-ka2 болса, нәтиже>0 болады. Көбінесе екі тіркестің бірдей еместігін анықтау үшін қолданылады. Мысалы:
- main ()
- {
- printf("%d\n",strcmp("Привет","Привет"));
- printf("%d\n",strcmp("Jello","Hello"));
- printf("%d\n",strcmp(" Приветствие", "Приветствую"));
- getch();
- } Алғашқы екі сөз бірдей (0), келесі екі сөздің 1-әрпі әр түрлі, олардың ASCII-кодтарының айырмасы – 2 (J - 74, H - 72), ал 3-жолы - 59 (и – 168, у – 227, олардың кодтарының айырмасы 168-227=-59)
- //strcmp(str1, str2) функциясын пайдалану
- #include
- #include
- #include
- #define NAME "Ритчи"
- main ()
- { char f[20];
- puts("Си тілінің авторы кім?");
- gets(f);
- while(strcmp(f,NAME)!=0)
- {puts("Тағы кім болуы мүмкін?");
- gets(f);
- }
- puts("Дұрыс!");
- getch();
- }
- Нәтижесі:
- Си тілінің авторы кім?
- Керниган
- Тағы кім болуы мүмкін?
- Ритчи
- Дұрыс!
- 4)strcpy(str1, str2) функциясы сөздердің көшірмесін алу үшін қажет, мұндағы str2 айнымалысындағы сөз тіркесі str1 айнымалысына көшіріледі. Мысалы:
- // strcpy(str1, str2) функциясын қолдану
- #include
- #include
- #include
- main ()
- {char str1[21];
- strcpy(str1, "Как дела, друг?");
- puts(str1);
- strcpy(str1, "Ура!");
- puts(str1);
- getch();
- }
- Нәтижесі:
- Как дела, друг?
- Ура!
- 2-мысал:
- //strcpy(str1, str2) функциясын пайдалану
- #include
- #include
- #include
- #define stroka "функция копирования"
- main ()
- {
- char *ptr=stroka;
- char res[25];
- clrscr();
- puts(ptr);
- puts(res);
- strcpy(res,ptr);
- puts(ptr);
- puts(res);
- getch();
- }
-
- Нәтижесі:
- функция копирования
-
- функция копирования функция копирования
- 5) strstr(str1,str2) функциясы 2-ші көрсетілген жолды 1-ші жолдың ішінен іздейді.
- 6) strset(str,ch) функциясы берілген тіркестегі барлық символдарды көрсе-тілген тіркеске (ch) ауыстырады.
- 7) strtod(str1,str2) функциясы беріл-ген тіркесті double типті санға ауыс-тырады.
- 8) strchr(str,c) функциясы берілген тіркестегі коды көрсетілген символдың позициясын анықтайды.
- 9) strrev(str) функциясы берілген тір-кестің барлық символдарын керісінше бейнелейді.
- 10) strpbrk(str1,str2) функциясы 2-ші тіркестің кез келген символын 1-ші сөзден іздейді.
0>
Достарыңызбен бөлісу: |