Simvollar və sətirlər

Simvol və sətirlərin sintaksisi

Proqramlaşdırmadaverilənlərin tiplərindən bi­ri­ də chara­c­­te­rtipidir və simvol tipi işarə etmək üçün istifadə olunur.

Proqramların işlədiyi obyektlər içərisində xüsusi yeri mətn­lər, yəni hərflər, boşluqlar, durğu işarələri və sətrin sonunu, yeni abzasın başlanğıcını işarə edən görünməyən idarəedici simvollar ardıcıllığı tutur.

Ən geniş yayılmış proqram bildiyimiz kimi kom­pil­ya­tor­dur. O, proqramın mətnini analiz edir və onları prosessorun əmrlərinə çevirir. Digər geniş yayılmış proqram isə mətn re­dak­torudur. Onun köməyi ilə proqramlar, romanlar, po­vest­lər və s. yazılır.

Hərflər, durğu işarələri və idarəedici simvollar C dilində sim­vollar adlanır. Bir simvol səkkiz bitlə kodlaşdırılır və o, char dəyişənində saxlanıla bilər. Simvollar təkqat dırnaq işa­rə­si daxilində yazılır və aşağıdakı kimi təsvir olunur:

unsigned char x;

x=’a’ ;

proqramın bu fraqmentinin yerinə yetirilməsindən sonra x də­yişənində latın əlifbasının kiçik a hərfi kodlaşdırılan ədəd yer­­ləşəcək. Bu ədəd 97 –yə bərabərdir, lakin elə kom­pü­ter­lər ola bilər ki, orada bu hərf başqa cür kod­laş­dı­rı­lsın­.

Bəzi simvollar görünməyəndirlər, onların yazısı üçün dır­naq­ işarəsi daxilində hərflər ardıcıllığı istifadə olunur. Məsə­lən, ‘\n’ – sətrin keçidi, ‘\r’ – karetkanın qaytarılması.

Simvollar adətən bir-birinin ardınca yazılır və sözlər, cüm­lə­lər və s. əmələ gətirirlər. Məsələn, “Bakı” sözünü dörd ədəd­­­­­dən ibarət olan massivdə saxlamaq olar:

char x[4];

x[0]=’B’;

x[1]=’a’;

x[2]=’k’;

x[3]=’i’;

onu ekrana printf () funksiyası ilə çıxarmaq olar:

int i;

for (i=0; i<3;i++);

printf(“%c, x[i]);

printf(“\n”);

Bu proqramı bir qədər sadələşdirmək olar:

Misal 8.1.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{unsigned char x[5];

int i;

x[0]='B';

x[1]='a';

x[2]='k';

x[3]='i';

x[4]='\0';

i=0;

while (x[i]!='\0'){

printf("%c",x[i]);

i++;

}

printf("\n");

getch();

return 0;

}

Burada x[0] massivində artıq beş simvol var (sözün sonunda '\0' simvolu əlavə olunmuşdur), for () dövr operatoru əvəzinə isə while () dövr operatoru tətbiq olunmuşdur. Bu proqramın nöqsanı ondadır ki, hər hərfi massivə əllə daxil etmək lazımdır. Bu prosesi kompilyatora həvalə etmək üçün C dilində xüsusi konstruksiya – sətir mövcuddur.

Sətir – ikiqat dırnaq işarəsi daxilinə alınmış simvollar ardıcıllığıdır. Məsələn, “Bakı”. Sətri massivə salmaq üçün

unsigned char []=”Baki”;

yazmaq kifayətdir.

Bu sətrə rast gəldikdə kompilyator özü beş simvoldan iba­rət massiv - dörd hərf və yekunlaşdırıcı null '\0' simvolu ya­radır.

 

x[0] x[1] x[2] x[3] x[4]

B A K I '\0'

 

Şəkil 8.1.char x[]=”Baki”əmri ilə yaradılan x massivi

 

Beləliklə, ekrana Baki sözünü çıxaran proqram aşağıdakı ki­mi olar:

Misal 8.2.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{unsigned char x[]="Baki";

int i;

i=0;

while (x[i]) {

printf("%c",x[i]);

i++;

}

printf("\n");

getch();

return 0;

}

 

Bu proqramı daha da təkmilləşdirmək üçün while () dövrünü atmaq olar, belə ki, printf funksiyasında sətri çap etmək üçün xüsusi %s şablonu var:

Misal 8.3.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{unsigned char x[]="Baki";

printf("%s\n",x);

getch();

return 0;

}

 

Beləliklə, x[ ] massivində yerləşən sətrin ekrana çıxa­rıl­ma­sı adi x ədədinin çıxarılması ilə eynidir. Lakin sadəliyin arxa­sın­da daha mürəkkəb əməllər durur: yaddaşda sətrin baş­lan­dı­ğı yeri təyin etmək lazımdır, sonra hər sonrakı simvolun sıf­ra bərabər olduğunu yoxlamaq lazımdır, sıfra bərabər de­yil­sə, ekranda göstərilsin. Əgər simvol sıfırdırsa, sətrin sonu çatıb, onda '\n' simvolunu çıxarmaq və proqramı sona çat­dır­maq lazımdır.

 

Sətirlərlə işləyən funksiyalar

Strcat

Sintaksisi: char*strcat (char* sətir1, const char* sətir2);

Funksiyası: sətir1sətir2 sətirlərini birləşdirir və nəticəni sətir1-ə yazır.

Strcpy

Sintaksisi: char*strcpy(char*sətir1, const char*sətir2);

Funksiyası: sətir1-i sətir2-yə köçürür.

Başlıq fayl: <string.h>.

Strlen

Sintaksisi: int strlen(const char*sətir);

Funksiyası: sətrin sonunu qaytarır. Sıfır simvol nəzərə alınmır.

Başlıq fayl: <string.h>.

Strcmp

Sintaksisi: int strcmp(const char*sətir1, const char*s­ətir2);

Funksiyası: sətir1sətir2-ni müqayisə edir. Əgər sətirlər bə­ra­bər­dir­sə, onda sıfır qiyməti qaytarır, əgər sətir1<sətir2 olarsa, sıfır­dan kiçik ədəd, əgər sətir1>sətir2 olarsa, sıfırdan böyük ədəd qaytarır. Başlıq fayl: <string.h>.

Strlwr

Sintaksisi: char* strlwr(char*sətir);

Funksiyası: sətrin böyük hərflərini kiçik hərflərə çevirir (yalnız latın hərflərini emal edir).

Başlıq fayl: <string.h>.

Strupr

Sintaksisi: char*strupr(char*sətir);

Funksiyası: sətrin kiçik hərflərini böyük hərflərə çevirir (yal­nız latın hərflərini emal edir).

Başlıq fayl: <string.h>.

Strset

Sintaksisi: char*strupr(char*sətir);

Funksiyası: funksiya çağrılarkən sətri göstərilən simvolla ta­mam­layır.

Başlıq fayl: <string.h>.

Strchr

Sintaksisi: char*(strchr(const char*sətir, int simvol); Funksiyası: sətirdə simvolun axtarışını yerinə yetirir və gös­tə­ri­cini ilk tapılmış simvolun üzərinə qaytarır və ya əgər simvol tapılıb­sa, NULL qaytarır.

Başlıq fayl: <string.h>.