Sətir konstantla, yaxud dəyişənin qiymətilə verilə bilər. Pascal dilində sətirkonstantı apostrofa alınmış simvollar ardıcıllığı kimi verilir:
'Pascal' '1234'
'Araz çayı'
''ardıcıllığı uzunluğu sıfır olan xüsusi sətir konstantıdır. Belə sətrə boş sətirdeyilir.
Sətrin maksimal uzunluğu konkret proqramlaşdırma dilindən, yaxud verilmişdilin konkret translyatorundan asılıdır. Müasir proqramlaşdırma sistemlərindəsətirlərin uzunluğuna praktik olaraq hədd qoyulmur.
Sətirlərlə əməliyyatlar ədədlərlə yerinə yetirilən əməliyyatlardan fərqlənir.Sətirlərin toplanması və ya çıxılmasının, vurulması və ya bölünməsinin elə birmənası yoxdur. Sətirlər üzərində aparılan əsas əməliyyat sətirlərin birləşdiril-məsi, yaxud konkatenasiyasıdır. Bu əməliyyat nəticəsində ikinci sətir birinci sət-rin sonuna birləşdirilir. Konkatenasiya əməli + (plyus) simvolu ilə işarə olunur.
var a, man: string;
man := 'On'; a := man + ' manat';
nir.
Əslində sətirlər üzərində əməllər ədədlər üzərindəki əməllərdən daha çoxdur.Ancaq burada hər hansı əməl işarəsindən istifadə o qədər də əlverişli deyil vəqeyri-adidir. Ona görə də qalan sətir əməlləri, adətən, standart funksiyalar vasi-təsilə yerinə yetirilir. Proqramlaşdırma dillərinin əksəriyyətində aşağıdakı əmə-liyyatlar mümkündür:
operatoru kimi yazmaq lazımdır.
• Val (St,X,Code).Turbo Pascalda sətri ədədə çevirən standart funksiya -
Val funksiyası vardır. Bu zaman, təbii ki, çevrilən sətir ədədi sətir olmalıdır (yəni,ədəddən ibarət olmalıdır, məsələn, '17.5' , yaxud '1234' ). Funksiyanın para-metrlərindən
Stilkin sətrin özü,
Xalınan ədədin mənimsədildiyi dəyişən,
Code isə çevrilmənin uğurla keçib-keçmədiyini bildirən parametrdir. Belə ki,çevrilmə uğurlu olarsa,
Codeparametrinin qiyməti 0 olacaq, əks halda həminparametrə sətirdə səhvin baş verdiyi yerin nömrəsi yazılacaq. Aşağıdakı
pro-qram fraqmentiNumStrdəyişəninə tam ədədi qiymət verir.
repeat
Write ('Tam ədədi daxil edin: '); ReadLn (NumStr); Val (NumStr, IntNum, Error) until Error = 0;
Əgər daxil edilən ədəd sətirdirsə,Valproseduru bu sətriIntNumtam ədədinəmənimsədir. Əgər oxunan sətirdə rəqəmdən başqa ayrı simvollar da olarsa,Errordəyişəninin qiyməti sıfırdan fərqli olacaq və beləliklə də dövr təkrarla-nacaq.
• Str (X,St). Bu prosedur
Valprosedurunun əksini edir, yəni ədədi sətrə çevirir.
Str (123 :5, NumSt)operatoru
NumStdəyişəninə
' 123' sətrini yazacaq.Burada 5 sətirdəki simvolların sayını göstərir.
İndi göstərilən prosedurların bəzilərinin tətbiq olunduğu aşağıdakı misalabaxaq. Burada istifadəçinin göstərdiyi sözə sətirdə neçə dəfə rast gəlindiyi he-sablanır.
program P;
var s, s1: string; k, i: Integer;
begin
Write ('İlkin sətri daxil edin: '); ReadLn (s);
Write ('Axtarılan sözü daxil edin: '); ReadLn (s1);
k := 0;
while Pos(s1, s) begin
k := k + 1; Delete(s, Pos end;
WriteLn (k); end.
-
Sətir nədir və onun üzərində hansı əməliyyatlar aparılır?
-
Tutaq ki,Templ := 'Abra' və Temp2 := 'kadabra'.Aşağıdakı funksiya və prosedurların nəticəsini müəyyənləşdirin.
-
Magic := Concat(Temp1, Temp2)
-
Length(Magic)
-
HisMagic := Copy(Magic, 1, 8)
-
Delete(HisMagic, 4, 3)
-
Insert(Temp1, HisMagic, 3)
-
Pos(Temp2, Magic)
-
Pos(Temp1, Magic)
-
Val('1.234', RealNum, Error)
-
Str(1.234 :3:1, RealStr)
-
Sətrin polindromu onun özündən və tərs yazılışından ibarətdir. İstənilən sətrinpolindromunu yaradan funksiya yazın. Yəni bu funksiyanın girişinə 'abc' ver-dikdə, çıxışda 'abccba' alınmalıdır.
-
Sətirdə olan saitlərin sayını hesablayan proqram yazın.
ALTPROQRAMLAR.
FUNKSİYALAR VƏ PROSEDURLAR
İnsan həcmi bir neçə yüz sətir olan alqoritmdən "baş çıxara" bilər. Proqramsətirlərinin sayı artdıqca işin ümumi məntiqi itir. Konkret operatorların yerinəyetirdiyi əməliyyatlar elementar olsa da, onların ümumi məqsədini başa düşməkçətinləşir. Proqramın strukturu və onun yerinə yetirilmə ardıcıllığı aydın olmur.Belə alqoritmi dəyişdirmək, yaxud düzəltmək çox çətin olur.
Bu problemi həll etmək üçün alqoritm sadə əməliyyatları yerinə yetirən ayrı-ayrı alqoritmlərə bölünür. Belə ayrıca alqoritmlərə yardımçı alqoritmlər deyilir.Proqramlaşdırma dillərində yardımçı alqoritm termininin yerinə altproqram ter-minindən istifadə olunur. Yardımçı alqoritmə (altproqrama) müraciət etmək üçünonu çağırmaq lazımdır.
Adətən orta ölçülü proqramları hər biri çox da çətin olmayan əməliyyatı ye-rinə yetirən kiçik altproqramlara bölürlər. Yekun alqoritm ayrı-ayrı operatorlar-dan deyil, hər birinin öz adı olan bitkin kod bloklarından ibarət olur. Bu halda alt-proqramlara proqramçıların təyin etdiyi yeni operatorlar kimi baxmaq olar.
Standart altproqramlar. Bir çox yardımçı alqoritmlərdən tez-tez və müx-təlif məsələlərdə istifadə edilir. Məsələn, tez-tez tipik riyazi funksiyaları hesabla-maq, yaxud sətirlər üzərində standart əməliyyatlar aparmaq tələb olunur. Beləalqoritmləri hər proqramçı özü yazsa idi, bu çox böyük vaxt itkisinə səbəb olardı.Bu problem standart altproqramlar tətbiq etməklə aradan qaldırılır.
Standart altproqramlar adətən proqramlaşdırma dilində deyil, proqramlaşdır-ma sistemində (mühitində) təyin edilir. Onlar translyatora əlavə edilən altproq-ramlar kitabxanasına daxil olur. Standart altproqramların geniş kitabxanaları işiəhəmiyyətli dərəcədə yüngülləşdirir.
Yardımçı alqoritmlərin tipləri. Altproqramlar adətən, iki kateqoriyayabölürlər:
prosedurlar və
funksiyalar.
Prosedur, sadəcə hər hansı operatorlar ardıcıllığını yerinə yetirir.
Funksiya isə müəyyən qiyməti hesablayır və həmin qiyməti çağıran proqrama (yaxud
altproqrama) ötürür (qaytarır).
Bəzi proqramlaşdırma dillərində (məsələn, C-də) altproqramları prosedur vəfunksiyalara bölmürlər. Onların hamısına funksiya kimi baxılır. Belə dillərdəprosedur heç bir qiymət qaytarmayan funksiyadır.
Altproqramın parametrləri. Altproqramın işinin bir mənası olması üçüno, onu çağıran proqramdan verilənlər almalıdır. Verilənlər altproqrama parametr-lər şəklində ötürülür. Hər bir altproqram parametr kimi konkret tipli müəyyənverilənlər yığınını almağı gözləyir. Parametrlərə ehtiyacı olmayan altproqramlarda mümkündür.
Parametrlər Formal parametrlər
Altproqram yaradılarkən onun parametrlərinə ötürülən qiymətlər hələ məlumolmur. Təsvir zamanı altproqramın başlığında formalparametrlər göstərilir. For-mal parametrlər ötürülən verilənlərin tipini müəyyən edən ixtiyari identifi-katorlardır. Onlar yalnız altproqramın yerinə yetirdiyi əməliyyatları təsvir etməküçün lazımdır.
Altproqram çağırılarkən ona ötürülən faktik parametrlər göstərilir. Altproq-ramın operatorlarının yerinə yetirilməsi zamanı formal parametrləri faktikqiymətlər təmsil edir.
Altproqramın çağırılması. Altproqramı çağıran operatorun növü altpro-qramın tipindən və konkret proqramlaşdırma dilinin sintaksisindən asılıdır.Altproqramı çağırmaq üçün onun adını göstərmək lazımdır. Ondan sonra mötə-rizədə faktik parametrlərin siyahısı gəlir.
Faktik parametrlərin tipi və onların sayıaltproqramda formal parametrlərin təsvirinə uyğun gəlməlidir. Faktik parametrlərtəkcə dəyişənlər deyil, həm də konstantlar, yaxud ifadələr ola bilər.
Funksiyanı proqramın istənilən yerindən çağırmaq olar. Aşağıdakı misaldaz dəyişəninə katetlərixvəyolan düzbucaqlı üçbucağın hipotenuzunun uzunluğumənimsədilir. Hesablama üçün standart funksiyaya müraciət olunub.
z := sqrt(x*x + y*y);
Prosedurun çağırılması adətən ayrıca operator kimi göstərilir. Pascal dilindəbunun üçün heç bir açar söz tələb olunmur. Məsələn, parametr kimi iki tam ədədiqəbul edənPproseduru belə çağırıla bilər:
P(1, 2);
Faktik parametrlər
Yardımçı alqoritmlərin proqramlaşdırılması. Yardımçı alqoritmlərintəsviri proqramın ilkin mətninə daxil edilir. Proqramlaşdırma dillərinin əksəriy-yətində altproqramın ilk çağırılmadan öncə təsvir olunması tələb olunur.
Altproqramın təsviri
başlıqdan, gövdədən və
sonluqdan ibarətdir. Başlıq alt-proqramın adından və formal parametrlərin təsvirindən ibarətdir. Funksiya üçünhəm də qaytarılan qiymətin tipi göstərilir:
function Square(x: Integer) : Integer; begin
Square := x*x;
end;
Pascal dilində xüsusi sonluq operatoru olmur. Funksiyanın gövdəsibeginvəendoperatorlarının arasında yerləşdirilir.
Funksiyanın qaytardığı qiymət onun adıyla üst-üstə düşən dəyişənə mənimsədilməlidir.
Funksiyanın gövdəsinin daxilində bu dəyişəndən mənimsətmə operatorununyalnız sol tərəfində istifadə edilə bilər.
N ədədinin faktorialı dedikdə 1-dən n-dək ədədlərin hasili başa düşülür(n! = 1.2.3. ... .n). Aşağıdakı funksiya ədədin faktorialını hesablayır:
function Fact(n : Integer) : Integer; var
i : Integer; res : Integer; begin
res := 1;
for i := 1 to n do res := res * i; Fact := res; end;
Prosedurun təsvirində isə qaytarılan qiyməti hesablamağa lüzum yoxdur. Aşa-ğıda iki tam ədədin cəmini çıxışa verən prosedur təsvir olunub:
procedure PrintSum(x, y: Integer); begin
WriteLn(x+y);
end;
Adətən hesab olunur ki, altproqramın təsviri onun ilk istifadəsindən öndə yer-ləşdirilməlidir (çünki translyatora belə əlverişlidir). Ancaq bu müəyyən səbəblərdənproqramçı üçün rahat olmaya bilər. Bəzi proqramlaşdırma dilləri altproqramıntəsvirini onun birinci istifadəsindən sonra yerləşdirməyə imkan verir, ancaq bu haldaaltproqramın istifadədən öncə sadələşdirilmiş halda elan edilməsi tələb olunur.
Pascal dilində bunun üçün prosedurun başlığı təkrarlanır. Ondan sonrabegin açar sözünün olmaması bunun təsvir deyil, yalnız elan olduğunu bildirir.
procedure PrintSum(x, y: integer);
Elanın qabaqcadan olması altproqramın parametrləri haqqında translyatoraməlumat verir. Bu isə altproqramın çağırılmasını düzgün emal etməyə imkan verir.