Лекция өңдеу Сөз тіркестерін Сұрақтар: Символдарды енгізу-шығару функциялары Сөз тіркестерін өңдеу



жүктеу 126,5 Kb.
Дата23.11.2018
өлшемі126,5 Kb.
#23831
түріЛекция
  • 10 лекция
  • өңдеу
  • Сұрақтар:
  • 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
  • 2. Сөз тіркестерін өңдеу
  • 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)
  • Мұның нәтижесі:
  • 0 2 -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-ші сөзден іздейді.
  • Тыңдағандарыңызға
  • рахмет!

жүктеу 126,5 Kb.

Достарыңызбен бөлісу:




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау