Nəzarət strukturları. C dilinin konstruksiyalarına nəzarət

10.08.2022

Transact SQL sintaksisi iki əsas idarəetmə strukturunu əhatə edir. Bunlar operatorlardır: əgər, isə. Bu strukturların hər birinin standartlar baxımından yazılması üçün müvafiq məhdudiyyətlər və tələblər var. Bəziləri də var Ümumi Tələb olunanlar bütün verilmiş strukturlar üçün. Bütün bu tələblər və məhdudiyyətlər mənbə mətnlərin sonradan asan oxunması prinsipləri əsasında formalaşır.

Nəzarət strukturlarının yazılması qaydaları

Hamısı mənbə, idarəetmə strukturlarının daxilində yerləşən, eləcə də iç içə daxil edilmiş məntiqi strukturlar 2 simvolla girintili olmalıdır.

Eyni sətirdə idarəetmə ilə birlikdə başqa təlimatlardan istifadə etməyə icazə verilmir.

4.2.1.3 “Başlanğıc son” tikinti həmişə yeni sətirdən başlamalıdır.

Açıq şəkildə göstərilən istisnalar istisna olmaqla, nəzarət strukturlarının yuvalanmasına icazə verilir.

Şərti IF ifadəsi

Format:

Yazmağa da icazə verilir:

Format: əgər [ məntiqi ifadə 1 ]

Şərti ifadənin bütün hissələri (əgər, başqa halda, başqa, başlanğıc, son) eyni mövqedən başlayaraq yerləşdirilməlidir.

4.2.2.2 Şərti ifadənin “məntiqi mötərizələri” içərisində Transact SQL dili ifadələri 2 simvoldan ibarət standart tab dayanacağına uyğun yerləşdirilməlidir.

Məntiqi ifadələrdə məntiqi operatorları yazarkən onlardan əvvəl və sonra boşluq qoymalısınız

Mürəkkəb məntiqi ifadələr yazarkən mötərizələr və məntiqi ifadənin bir hissəsi arasına boşluq qoymaq qadağandır.

WHILE nəzarət quruluşu

Format: while ([ döngənin davamı şərti ])

(operatorlar)

4.2.3.1 while strukturunun “məntiqi mötərizələr” içərisində Transact SQL ifadələri 2 simvoldan ibarət standart tab dayanacağına uyğun yerləşdirilməlidir.

while strukturunun istifadəsi kursordan istifadə edərək müxtəlif keçidlərin təşkili üçün əsasdır.


Əsas operatorlar

Transact SQL sintaksisinə beş əsas operator daxildir. Bunlar operatorlardır: seçin, daxil etmək, yeniləmək, silmək, kursor. Bu operatorların hər biri üçün standartlar baxımından onların yazılması üçün müvafiq məhdudiyyətlər və tələblər var. Bütün bu operatorlar üçün bəzi ümumi tələblər də var. Bütün bu tələblər və məhdudiyyətlər mənbə mətnlərin sonradan asan oxunması prinsipləri əsasında formalaşır.

Annotasiya: C dilinin idarəetmə konstruksiyaları nəzərdən keçirilir: “if-else” və “if-else if” budaqları, “while” və “for” dövrələri. Ən yaxşı şəkildə qaçınılan konstruksiyalar da var: “keçid”, “do-while”, “goto”. Proqramın funksiyalar toplusu şəklində təqdimatı, funksiyaların prototipləri, giriş və çıxış parametrlərinin ötürülməsi üsulları nəzərdən keçirilir. Yaddaşın müxtəlif növləri sadalanır: statik, yığın, dinamik (yığın) və C dilində yaddaşla işləmə üsulları. Kompozit məlumat tipi "struktur" təqdim olunur. Material çoxsaylı proqram nümunələri ilə təsvir edilmişdir: kvadrat tənliyin həlli, kvadrat kökün hesablanması, iki ədədin gcd-nin hesablanması və genişləndirilmiş Evklid alqoritmi, ilk N sadə ədədin çapı, ağacın rekursiv keçidi və s.

Nəzarət strukturları

Nəzarət konstruksiyaları proqramlarda ilmələri və filialları təşkil etməyə imkan verir. C-də yalnız bir neçə konstruksiya var və onların yarısından istifadə etmək lazım deyil (onlar qalanları vasitəsilə həyata keçirilir).

Braketlər

Buruq mötərizələr sizə bir neçə elementar ifadəni bir mürəkkəb ifadə və ya blokda birləşdirməyə imkan verir. Bütün sintaktik konstruksiyalarda sadə operator əvəzinə mürəkkəb operatordan istifadə edilə bilər.

C-də lokal dəyişənlərin bəyannamələrini blokun əvvəlinə yerləşdirə bilərsiniz. Blok daxilində müəyyən edilmiş lokal dəyişənlər bloka daxil olduqda yaradılır və çıxış zamanı məhv edilir.

C++ dilində lokal dəyişənlər blokun əvvəlində deyil, istənilən yerdə elan edilə bilər. Bununla belə, C-də olduğu kimi, blokdan çıxarkən avtomatik olaraq məhv edilirlər.

Budur iki real dəyişənin dəyərlərini mübadilə edən proqram fraqmenti:

ikiqat x, y; . . . ( ikiqat tmp = x; x = y; y = tmp; )

Burada iki dəyişənin x və y dəyərlərini mübadilə etmək üçün əvvəlcə x-in dəyərini tmp köməkçi dəyişənində saxlayırıq. Sonra y-nin qiyməti x-ə, tmp-də saxlanılan x-in əvvəlki qiyməti isə y-ə yazılır. tmp dəyişəni yalnız bu fraqmentin daxilində lazım olduğundan onu bloka daxil etdik və tmp dəyişənini həmin blokun daxilində elan etdik. Blokdan çıxdıqdan sonra tmp dəyişəninin tutduğu yaddaş boşalacaq.

if bəyanat

if ifadəsi proqramda şaxələnməni təşkil etməyə imkan verir. Onun iki forması var: “if” ifadəsi və “if...else” ifadəsi. "if" operatorunun forması var

əgər (şərt) hərəkəti;

"if...else" operatorunun forması var

əgər (şərt) hərəkət1; başqa hərəkət 2;

Şərt kimi məntiqi və ya tam tipli hər hansı ifadədən istifadə edə bilərsiniz. Xatırladaq ki, tam ədəd ifadəsindən istifadə edərkən "true" dəyəri sıfırdan fərqli istənilən qiymətə uyğun gəlir. “if” ifadəsini icra edərkən əvvəlcə if-dən sonrakı şərt ifadəsi qiymətləndirilir. Əgər doğrudursa, hərəkət yerinə yetirilir, yalandırsa, heç bir şey olmur. Məsələn, aşağıdakı fraqmentdə x və y dəyişənlərinin maksimum qiyməti m dəyişəninə yazılır:

ikiqat x, y, m; . . . m = x; əgər (y > x) m = y;

Şərt doğru olduqda “if...else” ifadəsini yerinə yetirərkən if-dən sonra yazılan hərəkət yerinə yetirilir; əks halda, else-dən sonrakı hərəkət yerinə yetirilir. Məsələn, əvvəlki fraqment aşağıdakı kimi yenidən yazılır:

ikiqat x, y, m; . . . əgər (x > y) m = x; başqa m = y;

Vəziyyətin doğruluğundan asılı olaraq bir neçə hərəkət etmək lazım olduqda, bir neçə ifadəni bir blokda birləşdirərək qıvrım mötərizələrdən istifadə etməlisiniz, məsələn,

ikiqat x, y, d; . . . əgər (d > 1.0) ( x /= d; y /= d; )

Burada x və y dəyişənləri yalnız d-nin qiyməti birdən böyük olduqda d-ə bölünür.

Qıvrımlı mötərizələrdən hətta if və ya başqa ifadədən sonra yalnız bir ifadə olduqda belə istifadə edilə bilər. Onlar proqram mətninin strukturunu təkmilləşdirir və onun mümkün dəyişdirilməsini asanlaşdırır. Misal:

ikiqat x, y; . . . əgər (x != 0.0) ( y = 1.0; )

Əgər "x sıfırdan fərqlidirsə" yerinə yetirən başqa bir hərəkət əlavə etməliyiksə, onda biz sadəcə əyri mötərizələrin içərisinə bir xətt əlavə edəcəyik.

Bir neçə seçimdən seçin: əgər... başqa, əgər...

Çoxlu if...else şərti müddəaları ardıcıl olaraq yazıla bilər (yəni, else-dən sonrakı hərəkət yenə də şərti ifadə ola bilər). Nəticədə həyata keçirilir bir neçə variantdan seçim. Proqramlaşdırmada seçim konstruksiyasından çox istifadə olunur. Nümunə: həqiqi x dəyişəni verildikdə, siz həqiqi y dəyişəninə işarə(x) funksiyasının qiymətini yazmalısınız.

Salam əziz proqramçılar.

Yəqin ki, siz artıq əvvəlki məqalələrdən başa düşmüsünüz ki, proqram müəyyən ardıcıllıqla yerinə yetirilən ifadələrdən, sətirlərdən, rəqəmlərdən, operatorlardan, funksiyalardan ibarətdir.

Proqramın icra qaydası proqramçı tərəfindən müəyyən edilir və o, bunun üçün dil idarəetmə konstruksiyalarından istifadə edir. Yəni idarəetmə strukturu proqramın icrasının bu və ya digər sırası üçün əmrdir.

Nəzarət konstruksiyalarının təsvirinə keçməzdən əvvəl sizi xəbərdar etməliyəm ki, bir çox tanış adlar görəcəksiniz, çünki tikinti əvvəlki məqalələrdə artıq müzakirə etdiyimiz operatorlar, funksiyalar, döngələr ola bilər.

Konstruksiyalar (mümkün təriflər - təlimat, əmr) ya tək sətirli, ya da mürəkkəb ola bilər, yəni blok şəklində yığılır. Blok həm də içindəki strukturları ardıcıl olaraq yerinə yetirən ayrıca bir quruluşdur.

PHP-də altı əsas idarəetmə konstruksiya qrupu var. Bu:

1. Şərti ifadələr.
2. Dövrlər.
3. Seçilmiş dizaynlar.
4. Reklam dizaynları.
5. Dəyər qaytarma konstruksiyaları.
6. Daxiletmə konstruksiyaları.

Gəlin onlara ətraflı və hər şeyi qaydasında nəzərdən keçirək.

Şərti ifadələr

Şərti operatorlarla artıq “PHP Operatorları” məqaləsində tanış olmuşuq, ona görə də indi onları idarəetmə strukturları kimi nəzərə alaraq, bildiyimiz kimi, heç vaxt əhatə etdiyimiz şeyi təkrarlaya biləcəyik. artıq.

Şərti ifadələr təkcə PHP dilində deyil, bütün dillərdə ən çox istifadə olunan konstruksiyalardır. alqoritmik dillər proqramlaşdırma.

Tək sətir nümunəsi qurursa

əgər ($növbəti == 0 )
{
echo "Bu proqramlaşdırma dili konstruksiyasıdır";
}
?>

if ifadəsinin bu nümunəsi $next dəyişəninin sıfıra bərabər olmasını müəyyən edir. Bu şərt doğrudursa, əks-səda yerinə yetiriləcək. Əks halda, boş bir səhifə açılacaq.

Aşağıdakılar birləşmiş quruluşun nümunəsi olacaqdır.

$növbəti = 0 ;
əgər ($növbəti == 0 )
{
echo $tərəvəz " Tərəvəz
";
echo $meyvə. "Meyvələr
";
echo $ giləmeyvə. "Giləmeyvələr
";
}
?>

Burada $next dəyişəninə də 0 qiyməti təyin edilir və if konstruktu onu yoxlayaraq əks-səda konstruksiyaları blokunu icra edir.

Nəzərə alın ki, php-də sətri qırmaq üçün html-dən bizə tanış olan teqdən istifadə edirik
. Gələcəkdə yenidən görüşəcəyik html teqləri, php kodunda istifadə olunur.

Onu da qeyd edim ki, PHP-də girintilərin heç bir əhəmiyyəti yoxdur və yalnız kodun oxunuşunda təkmilləşdirmələr tətbiq olunur.

Əvvəlki misalda, göstərilən şərt doğru olarsa, göstərişin yerinə yetirildiyi variantı nəzərdən keçirdik.

İndi təsəvvür edin ki, biz yalnız if konstruksiyasının şərti doğru olduqda deyil, həm də şərt doğru olmayanda hansısa müddəanı icra etməliyik.

Bu halda tətbiq edilir başqa qurmaq

$növbəti = 1 ;
əgər ($növbəti == 0 )
{
echo $tərəvəz . "Tərəvəz";
}
başqa
{
echo $meyvə . "Meyvələr";
}
?>

Bu halda, açılan boş bir səhifə deyil, “Meyvə” girişidir.

elseif quruluşu

Bu konstruksiya if və else konstruksiyalarının imkanlarını daha da genişləndirir. Təsəvvür edin ki, ikidən çox bəyanatımız var, onlardan biri icra olunmalıdır.

Bu halda, elseif konstruksiyası əvvəlki tikililərə əlavə edilir.

$növbəti = 0 ;
əgər ($növbəti == 0 )
{
echo $tərəvəz . "Tərəvəz";
}
elseif ($növbəti == 0 )
{
echo $meyvə . "Meyvələr";
}
başqa
{
echo $berry . "Giləmeyvələr";
}
?>

Teorik olaraq, elseiflərin sayı qeyri-məhduddur. Və nə qədər çox olsa da, proqram düzgün variantı tapana qədər hər birini yoxlayacaq, yəni doğru .

Seçim konstruksiyaları

Çox tez-tez, nə vaxt böyük miqdarda operatorlar, elseif konstruksiyasının istifadəsi çox miqdarda kod səbəbiylə əlverişsiz olur.

Bu vəziyyətdə, xilasetmə üçün gəlir keçid qutusu dizaynı, keçidi dəyişə bilərsiniz

Switch-case konstruksiyası öz fəaliyyətinə görə if-else konstruksiyasına bənzəyir, lakin sonuncudan fərqli olaraq, nəticədə ikidən çox variant əldə etməyə imkan verir.

Quruluşun gövdəsi əyri mötərizələr içərisindədir və emal ediləcək hər bir dəyər üçün iki nöqtə ilə bitən hal ifadəsi, sonra isə sonlandırıcı fasilə ifadəsi istifadə olunur.

$next= "Meyvə";
keçid ($növbəti) (
"Tərəvəz" işi:
əks-səda "Kartof";
fasilə ;
"Meyvə" qutusu:
əks-səda "Alma";
fasilə ;
"Giləmeyvələr" işi:
əks-səda "Albalı";
fasilə ;
}
//Almalar göstərilir

Bu misalda əvvəlcə şərt işlənəcək, sonra bu şərtə uyğun qiymətə malik case bəyanatı tapılacaq və yalnız bundan sonra keçid konstruksiyası icra edilməyə başlayacaq.

Tapşırıqda göstərilməyən dəyərlər üçün keçid-case konstruksiyasında standart operator istifadə olunur.

$next= "Göbələklər";
keçid ($növbəti) (
"Tərəvəz" işi:
əks-səda "Kartof";
fasilə ;
"Meyvə" qutusu:
əks-səda "Alma";
fasilə ;
"Giləmeyvələr" işi:
əks-səda "Albalı";
fasilə ;
defolt:
əks-səda "Şampignonlar";
}
//Şampignonlar göstərilir
?>

Əgər fasilə ifadəsini buraxsanız, proqram keçid-case konstruksiyasının bütün dəyərlərini emal edəcək və göstərəcək

$next= "Tərəvəzlər";
keçid ($növbəti) (
"Tərəvəz" işi:
əks-səda "Kartof";
"Meyvə" qutusu:
əks-səda "Alma";
"Giləmeyvələr" işi:
əks-səda "Albalı";
defolt:
əks-səda "Şampignonlar";
}
/* Çıxış
Kartof
alma
albalı
Şampinyon */

?>

Switch-case dizaynının başqa bir xüsusiyyəti bir neçə variantı bir ifadədə birləşdirə bilməsidir.

$next= "Ağcaqayın";
keçid ($növbəti) (
"Tərəvəz" işi:
"Meyvə" qutusu:
"Giləmeyvələr" işi:
əks-səda "Kartof
alma
Albalı";
fasilə ;
"Ağcaqayın" işi:
"Palıd" işi:
"Spruce" işi:
əks-səda "Meşə";
fasilə ;
defolt:
əks-səda "Şampignonlar";
}
// Çıxışlar Meşəsi
?>

Dövrlər və ya təkrar strukturları.

Döngələr konstruktun gövdəsini təşkil edən operatorların təkrar (if konstruksiyasından fərqli olaraq) icrası üçün nəzərdə tutulub.

Döngənin icrası prosesinə iterasiya deyilir.

Php-də üç növ döngə var:

1. while və do-while qeyri-müəyyən sayda təkrarlanan dövrədir.
2. for - əvvəlcədən müəyyən edilmiş təkrarlama sayına malik döngə.
3. foreach - massivin emalı (sadalanması) dövrü.

qurarkən

Bir ifadə ilə sadə bir dövrə nümunəsi; adətən daha çox var.

$növbəti = 1 ;
isə ($növbəti<= 8 )
{
echo $növbəti. "
" ;
$növbəti++;
}
//1-dən 8-ə qədər rəqəmləri göstərir. Tag
onları sütun şəklində təşkil edir

?>

Gəlin burada nə baş verdiyinə, yəni bu proqramın necə işlədiyinə daha yaxından nəzər salaq.

Birinci sətir $next dəyişənini elan edir və ona bir dəyər təyin olunur. Dəyərin təyin edilməsi dəyişən başlatma adlanır.

İkinci sətirdə proqram while şərtini yoxlayır ($next<= 8) , которое будет являться истиной (true).

Üçüncü sətir birinci döngəni icra edir, çünki biri 8-dən azdır və bu, doğrudur

Dördüncüsü, bu halda operator olan dəyişənə artım operatoru (++) təyin edilir ki, bu da $növbəti operatorun hər bir sonrakı qiymətini bir artırır.

Proqram 9-a çatana qədər birindən sonrakı hər bir tam ədədi emal edəcək və göstərəcək.

tikərkən döngə vəziyyətinin iterasiyadan əvvəl yox, sonra yoxlanılması ilə fərqlənir.

Nəticədə, döngə tamamlanmazdan əvvəl bir iterasiya yerinə yetiriləcək, bu yanlışdır

$növbəti = 1 ;
et
{
echo $next;
}
isə ($növbəti++<= 8 );
//1-dən 9-a qədər rəqəmləri bir sətirdə çap edir.
?>

Gördüyünüz kimi, 9 yanlış olsa da, növbəti iterasiya hələ də tamamlandı, bundan sonra proqram şərti yoxladı və dövrə başa çatdı.

Tikinti üçün, və ya sayğaclı döngə iş baxımından while dövrəsinə bənzəyir, lakin daha yığcam not formasına malikdir.

Döngə başlamazdan əvvəl təkrarların sayı məlum olduqda ən yaxşı şəkildə istifadə olunur və onun köməyi ilə sayğac dəyərləri vasitəsilə sadə çeşidləmədən daha mürəkkəb hərəkətlər edə bilərsiniz.

Aşağıdakı nümunədə kiçik bir kitab üçün məzmun cədvəli yazacağıq.

üçün ($növbəti = 1 ; $növbəti< 5 ; $next++)
{
əks-səda "- Səhifə" . $növbəti . "
";
}
/*Çıxışlar
-Səhifə 1
- Səhifə 2
- Səhifə 3
- Səhifə 4
- Səhifə 5 */

?>

Döngənin şərtində (mötərizədə) yazılmış üç ifadəni ətraflı nəzərdən keçirək.

$növbəti = 1; — birdən saymağa başlayan sayğac dəyişəni.
$növbəti< 5; — определяет продолжительность цикла.
$next++ — sayğac dəyərinin dəyişdirilməsi addımını müəyyən edir. Bizim vəziyyətimizdə birə bərabərdir.

İfadələr nöqtəli vergüllə ayrılır. Bir ifadədə bir neçə əmr qoya və onları vergüllə ayıra bilərsiniz. Sonra eyni məzmun cədvəli bir az fərqli şəkildə edilə bilər

üçün ($növbəti= 1 , $nev= 1 , $page= "-Səhifə"; $növbəti<= 5 ; $nev++, $next=$nev)
{
$səhifə=$səhifə . "-";
echo $səhifə, $növbəti . "
";
}
/*Çıxışlar
-Səhifə 1
-Səhifə--2
-Səhifə---3
-Səhifə----4
-Səhifə-----5 */

?>

For-un başqa bir xüsusiyyəti əks-səda konstruksiyasından imtina etmək qabiliyyətidir.

Düzdür, bu seçim xüsusilə xoş qarşılanmır, çünki o, qeyri-adi təbiətinə görə kodun oxunuşunu bir qədər çətinləşdirir, lakin hələ də mövcud olmaq hüququna malikdir.

Bunda çap konstruksiyaları döngə vəziyyətinə daxil edilir

üçün ($next= 1 ; $next<= 5 ; print $next, print "
" , $next++);
/*Çıxışlar
1
2
3
4
5 */

?>

Eko konstruksiya for şərtinə daxil edilə bilməz.

Do-while istisna olmaqla, yuxarıda göstərilən bütün konstruksiyalarda alternativ qeyd forması var - əyri mötərizəsiz.

Bu halda konstruksiyası və şərti olan xətt iki nöqtə ilə bitir və bütün blok son konstruksiya ilə bağlanır, onun davamı tətbiq olunduğu konstruksiyadır: endif, endwhile və s.

$növbəti = 1 ;
isə ($növbəti<= 10 ):
echo $next;
$növbəti++;
sonunda;
?>

foreach konstruksiyası yalnız massiv vasitəsilə təkrarlamaq üçün nəzərdə tutulmuş xüsusi dövrə növüdür.

$next[ "pomidor"] = "Qırmızı";
$next[ "alma"] = "Yaşıl";
$next[ "üzüm"] = "Şirin";
$next[ "göbələk"] = "Ağ";
foreach ($sonrakı olaraq $açar => $dəyər)
{

echo "$value $key
";
}
/*Çıxışlar
Qırmızı pomidor
Yaşıl alma
Şirin üzüm
Porcini */

?>

Lazım gələrsə dərhal loopdan çıxmaq üçün var tikintini pozmaq. İcra edildikdən sonra idarəetmə döngədən sonrakı ifadəyə verilir.

$növbəti= 0 ;
isə ($növbəti++< 10 )
{
if ($next== 7 ) break;
əks-səda "$növbəti
";
}
/*Çıxışlar
1
2
3
4
5
6 */

?>

Gördüyünüz kimi, yeddinci iterasiyada dövrə kəsildi.

Tikintiyə davam edin, fasilədən fərqli olaraq, yalnız cari iterasiyanı kəsir və növbəti birinə keçir.

$növbəti= 0 ;
isə ($növbəti++< 5 )
{
əgər ($next== 3 ) davam etsə ;
əks-səda "$növbəti
";
}
/*Çıxışlar
1
2
4
5 */

?>

Gördüyünüz kimi, 3-cü iterasiya yoxdur, çünki davam konstruksiya ilə kəsilib

Reklam dizaynları

PHP-də bəyannamə konstruksiyaları iki elementlə təmsil olunur. Bunlar elan və yazı konstruksiyalarıdır.

Əslində, onlar tamamilə eynidir və eyni müvəffəqiyyətlə eyni nəticəni əldə etmək üçün həm birini, həm də digərini istifadə edə bilərsiniz.

Kodun başa düşülməsini asanlaşdırmaq üçün əsasən declare konstruksiyasından istifadə olunur. Blokların icrası üçün əmrləri (direktivləri) təyin etmək üçün istifadə olunur.

Hal-hazırda iki direktiv tanınır: gənələr və kodlaşdırma

Ticks direktivi gənələrin sayını təyin edir

elan etmək (gənə = 1 );

register_tick_function("tick_handler");

// Funksiya hər işarədə yerinə yetiriləcək
?>

Kodlaşdırma direktivi bütün skriptin kodlaşdırılmasını təyin etmək üçün istifadə olunur.

bəyan etmək (kodlaşdırma = "UFT-8");
?>

Daxil dizaynları

Daxiletmə konstruksiyaları proqrama fərdi skriptləri və faylları daxil etmək üçün istifadə olunur. Onların sayəsində proqram hazır materialdan yığıla bilər.

Daxiletmə konstruksiyaları həmçinin koda bəzi mətn daxil etməli olduğunuz zaman skript kodunun miqdarını azaltmaq üçün istifadə olunur. Sonra txt faylı proqrama daxil edilir.

Düzdür, bu halda ssenarinin təhlükəsizliyinə təhlükə yaranır və onunla birlikdə həll edilir txt faylı Proqrama sabiti daxil etmək və daxil edilmiş fayllarda onun mövcudluğunu yoxlamaq lazımdır.

Ümumilikdə, PHP-də 4 növ daxiletmə konstruksiyaları var və onların hamısı yalnız bir arqument - fayla gedən yol götürür:

daxil et - faylı proqrama qoşur, əgər çatışmazsa, xəbərdarlıq edir;
tələb etmək - faylı proqrama bağlayır və çatışmazsa, skripti dayandırır;
include_once - daxil edilmiş faylın yalnız birdəfəlik daxil edilməsinə icazə verir və o yoxdursa, xəbərdarlıq edir;
tələb_once - bağlı faylın yalnız birdəfəlik daxil edilməsinə icazə verir, o olmadıqda isə skripti dayandırır;

include_once və require_once konstruksiyaları rahatdır, çünki onlar funksiya bəyannamələrini ehtiva edən faylları yenidən daxil etmək mümkün olduqda, iç içə daxil olduqda çaşqınlığı aradan qaldırırlar.

Həqiqətən heç bir sual qalmayıb?


Dön

Yalnız bizdə “uh-huh” sözü “zəhmət olmasa”, “sağ ol”, “axşamınız xeyir”, “xoş gəlmisiniz” və “bağışlayın” sözlərinin sinonimidir. əksər hallarda "əlvida" əvəz edir.

-30°-də avtobus kimi heç bir sevgini gözləmək olmaz.

İstənilən PHP skripti bir sıra konstruksiyalardan formalaşır. Konstruksiyalar operatorlar, funksiyalar, ilmələr ola bilər. Quruluşlar adətən nöqtəli vergüllə bitir. Bundan əlavə, konstruksiyalar qıvrımlı mötərizələrlə (...) konstruksiyalar qrupu yaratmaq üçün birlikdə qruplaşdırıla bilər. Bir qrup struktur da ayrıca bir quruluşdur.

Bu gün PHP-nin əsas konstruksiyaları haqqında qısaca danışacağam. Gəlin başlayaq:

Şərti ifadələr:

Şərti ifadələr bütün alqoritmik proqramlaşdırma dillərində ən çox yayılmış konstruksiyalardır.

1. if quruluşu

if (boolean ifadəsi)
operator;
?>

if konstruksiyasında məntiqi ifadə var. Əgər məntiqi ifadə doğrudursa (doğrudur), onda if konstruksiyasından sonrakı müddəa yerinə yetiriləcək, əgər məntiqi ifadə yalandırsa (yalan) if-dən sonrakı ifadə yerinə yetirilməyəcək. Budur bir nümunə:

əgər ($a > $b) əks-səda verir "a-nın dəyəri b-dən böyükdür";
?>

2. Başqa quruluş

Çox vaxt yalnız if konstruksiyasının gövdəsində deyil, həm də if konstruksiyasının şərti yerinə yetirilmədikdə ifadələrin icrasına ehtiyac yaranır. Bu vəziyyətdə, başqa konstruksiya olmadan edə bilməzsiniz. Bu tikinti if-else adlanacaq.

əgər (boolean_ifadə)
təlimat_1;
başqa
təlimat_2;
?>

Boolean_ifadəsi doğrudursa, icra edin
təlimat_1, əks halda - təlimat_2. Hər hansı digər dildə olduğu kimi, else bəndi buraxıla bilər, bu halda müvafiq dəyəri əldə edərkən heç nə edilmir. Misal:

əgər ($a > $b) (
echo "a b-dən böyükdür" ;
) başqa (
əks-səda "a b-dən böyük deyil";
}
?>

if-else konstruksiyası.

Yoğun bağırsağın yerləşdirilməsinə diqqət yetirin (:)! Onu ötürsəniz, səhv mesajı yaradılacaq.

əgər (boolean_ifadə):
komandalar;
elseif(digər_məntiqi_ifadə):
digər_əmrlər;
başqa:
else_commands;
endif
?>

3. elseif konstruksiyası

elseif if və else konstruksiyalarının birləşməsidir. Bu konstruksiya if-else şərti konstruksiyasını genişləndirir.

əgər (boolean_ifadə_1)
operator_1;
elseif (boolean_ifadə_2)
operator_2;
başqa
operator_3;
?>

elseif konstruksiyasından istifadənin praktiki nümunəsi:

əgər ($a > $b) (
echo "a b-dən böyükdür" ;
) elseif ($a == $b ) (
echo "a b-yə bərabərdir" ;
) başqa (
echo "a b-dən kiçikdir" ;
}
?>

Nəzarət strukturları

Dövrlər:

Döngələr müəyyən (və hətta qeyri-müəyyən - döngənin işləməsi vəziyyətdən asılı olduqda) müxtəlif ifadələri neçə dəfə təkrarlamağa imkan verir. Bu ifadələr döngənin gövdəsi adlanır. Döngənin keçidi iterasiya adlanır.

1. while şərti ilə dövrə

Bir müddət ilkin şərti olan dövrə aşağıdakı prinsiplərə uyğun işləyir:

  • Məntiqi ifadənin qiyməti hesablanır.
  • Əgər dəyər doğrudursa, dövrənin gövdəsi yerinə yetirilir, əks halda, biz döngədən sonrakı ifadəyə keçirik.

isə (məntiqi_ifadə)
göstərişlər;
?>

Bu vəziyyətdə, döngənin gövdəsi bir göstərişdir. Adətən döngənin gövdəsi çoxlu sayda ifadələrdən ibarətdir. Bir müddət ön şərti olan bir dövrə nümunəsi:

$x = 0 ;
isə ($x++< 10 ) echo $ x ;
// Çap edir 12345678910
?>

2. Do while postşərti ilə döngə

while dövrəsindən fərqli olaraq, bu dövrə ifadənin dəyərini əvvəl yox, hər keçiddən sonra yoxlayır. Beləliklə, döngənin gövdəsi ən azı bir dəfə yerinə yetirilir.

et
{
loop_body;
}
while (məntiqi_ifadə);
?>

Növbəti iterasiyadan sonra məntiqi_ifadənin doğru olub-olmaması yoxlanılır və belədirsə, idarəetmə yenidən dövrənin əvvəlinə keçirilir, əks halda dövrə dayandırılır. Nümunə skript:

$x = 1 ;
etmək (
echo $x ;
) isə ($x++< 10 );
?>

3. For counter ilə döngə

Döngənin gövdəsini müəyyən edilmiş sayda yerinə yetirmək üçün əks döngə istifadə olunur. For döngəsindən istifadə edərək, sayğac dəyəri üzərində təkrarlamaqdan başqa hərəkətləri yerinə yetirəcək konstruksiyalar yarada bilərsiniz (və etməlisiniz).

üçün (başlanğıc_əmrlər; döngə_şərti; təkrar_sonrası əmrləri) ( loop_body; )
?>

For döngəsi işə başlatma_komandalarını yerinə yetirməklə başlayır. Bu əmrlər yalnız bir dəfə yerinə yetirilir.

Bundan sonra loop_şərti yoxlanılır, əgər doğrudursa, o zaman loop_body yerinə yetirilir. Bədənin son ifadəsi yerinə yetirildikdən sonra, iterasiyadan sonrakı əmrlər yerinə yetirilir. Sonra loop_condition yenidən yoxlanılır. Doğrudursa, döngə_gövdəsi və təkrardan_sonra əmrləri yerinə yetirilir.

üçün ($x = 0; $x< 10 ; $ x ++) echo $ x ;
//Çıxışlar 0123456789

?>

for döngüsü üçün alternativ sintaksis var:

üçün(başlanğıc_əmrlər; döngə_şərti; təkrarlama_komandalarından sonra):
operatorlar;
son üçün;
?>

4. Foreach massiv dövrəsi

foreach ($key =>$value kimi massiv)
komandalar;
?>

Əmrlər massivin hər bir elementi üçün tsiklik olaraq yerinə yetirilir, növbəti açar=>dəyər cütü $key və $value dəyişənlərində bitir. Foreach döngəsinin nümunəsi:

$ adları [ "İvanov" ] = "Andrey" ;
$ adları [ "Petrov" ] = "Boris" ;
$ adları [ "Volkov" ] = "Sergey" ;
$ adları [ "Makarov" ] = "Fedor" ;
foreach ($adlar $ açarı => $ dəyər) (
əks-səda " $value $açar
" ;
}
?>

Yuxarıdakı skript çıxışları:

Andrey İvanov
Boris Petrov
Sergey Volkov
Fedor Makarov

Foreach döngəsində növbəti elementin açarının dəyəri ilə maraqlanmadıqda istifadə edilməli olan başqa qeyd forması var.

foreach ($value kimi massiv)
komandalar;
?>

Foreach döngəsi orijinal massivdə deyil, onun surəti üzərində işləyir. Bu o deməkdir ki, massivdə edilən hər hansı dəyişiklik döngənin gövdəsindən “görünə” bilməz. Bu, massiv kimi təkcə dəyişəni deyil, həm də massivi qaytaran bəzi funksiyanın nəticəsini istifadə etməyə imkan verir (bu halda funksiya yalnız bir dəfə - dövrə başlamazdan əvvəl çağırılacaq və sonra iş görüləcək qaytarılmış dəyərin surəti ilə).

5. Break konstruksiyası

Çox vaxt mürəkkəb dövrənin məntiqini sadələşdirmək üçün növbəti təkrarlama zamanı onu kəsmək rahatdır. Buna görə də dərhal döngədən çıxan fasilə konstruksiyası mövcuddur.

O, bir isteğe bağlı parametrlə müəyyən edilə bilər - hansı iç-içə döngədən çıxmalı olduğunu göstərən nömrə. Varsayılan 1-dir, yəni cari döngədən çıxır, lakin bəzən digər dəyərlər istifadə olunur.

fasilə; // Defolt
fasilə (dövrü_nömrə); // İç içə salınmış döngələr üçün (kesilmiş döngənin sayı göstərilir)
?>

$x = 0 ;
isə ($x++< 10 ) {
əgər ($x == 3) kəsilərsə;
əks-səda "İterasiya $x
"
;
}
// $x 3 olduqda, dövrə kəsilir
?>

Döngə çıxış edəcək:

İterasiya 1
İterasiya 2

Əgər xüsusi (iç-içə) dövrənin işini dayandırmaq lazımdırsa, onda biz fasilə konstruksiyasına parametr ötürməliyik - loop_number, məsələn, break(1). Dövrlərin nömrələnməsi belə görünür:

üçün (...) // Üçüncü döngə
{
üçün (...) // İkinci döngə
{
üçün (...) // Birinci döngə
{
}
}
}

6. Tikintiyə davam edin

Davam konstruksiyası, fasilə kimi, yalnız siklik konstruksiyalarla “tandemdə” işləyir. Döngənin cari iterasiyasını dərhal bitirir və yenisinə keçir (əlbəttə ki, ilkin şərti olan dövrə üçün döngə şərti təmin edilirsə). Break üçün olduğu kimi, for continue üçün də nəzarətin qaytarılması ilə davam etdiriləcək döngənin yuva səviyyəsini təyin edə bilərsiniz.

Əsasən davam et sizə kodunuzda əyri mötərizələrin sayını saxlamağa və onun oxunuşunu artırmağa imkan verir. Bu, ən çox filtr döngələrində, müəyyən sayda obyektləri təkrarlamaq və onlardan yalnız müəyyən şərtlərə cavab verənləri seçmək lazım olduqda lazımdır.

$x = 0 ;
isə ($x++< 5 ) {
əgər ($ x == 3 ) davam edərsə;
əks-səda "İterasiya $x
"
;
}
// Döngə yalnız üçüncü iterasiyada pozulacaq
?>

Skript çıxış edəcək:

İterasiya 1
İterasiya 2
İterasiya 4
İterasiya 5

Dizayn seçimi:

keçid qutusu

Çox vaxt ard-arda yerləşmiş bir neçə if-else ifadəsi əvəzinə xüsusi keçid-iş seçimi konstruksiyasından istifadə etmək məqsədəuyğundur. Bu konstruksiya göstərilən ifadənin dəyərindən asılı olaraq hərəkətləri seçmək üçün nəzərdə tutulub.

Switch-case konstruksiyası bir qədər if-else konstruksiyasını xatırladır. Seçim konstruksiyası bir çox mümkün variant varsa, məsələn, 5-dən çox olduqda istifadə edilə bilər və hər bir seçim üçün xüsusi hərəkətlər etməlisiniz.

keçid (ifadə) (
hal dəyəri1: əmrlər1;
hal dəyəri2: əmrlər2;
. . .
halda dəyəriN: əmrlərN;
]
}
?>

Açar qutunun dizaynının iş prinsipi aşağıdakı kimidir:

  • İfadənin dəyəri hesablanır;
  • Bir sıra dəyərlərə baxılır. Qiymət1 birinci addımda hesablanmış ifadənin qiymətinə bərabər olsun. Əgər fasilə konstruksiya göstərilməyibsə, o zaman i, i+1, i+2, ... , N əmrləri yerinə yetiriləcək.Əks halda yalnız i əmr nömrəsi yerinə yetiriləcək.
  • Əgər dəstdən heç bir dəyər ifadənin dəyərinə uyğun gəlmirsə, əgər biri göstərilibsə, defolt blok yerinə yetirilir.

Switch-case konstruksiyasından istifadə nümunəsi:

$x = 1 ;
// if-else istifadə edin
əgər ($x == 0) (
əks-səda "x = 0
" ;
) elseif ($x == 1) (
echo "x = 1
" ;
) elseif ($x == 2) (
echo "x = 2
" ;
}
// Switch-case istifadə edin
keçid($x)(
hal 0:
əks-səda "x = 0
" ;
fasilə;
hal 1:
echo "x = 1
" ;
fasilə;
hal 2:
echo "x = 2
" ;
fasilə;
}
?>

Yuxarıdakı skript iki dəfə x=1 çap edir.

Qaytarılan dəyər quruluşu:

qayıtmaq

Qaytarma konstruksiyası funksiya sorğusunun parametrləri kimi ilk növbədə istifadəçi tərəfindən müəyyən edilmiş funksiyalardan dəyərləri qaytarır. Qayıdış çağırıldıqda, istifadəçi tərəfindən müəyyən edilmiş funksiyanın icrası dayandırılır və qaytarma konstruksiyasına xüsusi dəyərlər qaytarılır.
Əgər qaytarma konstruksiyası qlobal əhatə dairəsindən çağırılsa (istifadəçi tərəfindən müəyyən edilmiş funksiyalardan kənar), o zaman skript də çıxacaq və qaytarma da müəyyən dəyərləri qaytaracaq.

Tam ədəd tipli dəyərləri qaytarmaq üçün qaytarma konstruksiyasından istifadə nümunəsi:

funksiyanın təkrar funksiyası ()
{
qayıt 7 ;
}
əks-səda funksiyası (); // "7" çap edir.
?>

Qaytarma konstruksiyasından istifadə edərək massivlərin qaytarılması nümunəsi:

funksiya nömrələri()
{
qaytarma massivi (0, 1, 2);
}
list($sıfır, $bir, $iki) = ədədlər();
echo $ sıfır;
echo $one;
echo $iki;
// "012" çap edir
?>

Daxil olan dizaynlar:

Daxiletmə konstruksiyaları bir neçə ayrı fayldan PHP proqramını (skript) toplamağa imkan verir. PHP-də iki əsas daxil konstruksiya var: tələb və daxil edin.

1. tələb()

Tələb konstruksiyası skript icra edilməzdən əvvəl kodu daxil etməyə imkan verir.

fayl adını tələb etmək;

Proqram başlayanda tərcüməçi təlimatı faylın adının məzmunu ilə əvəz edəcək (bu faylda PHP skripti də ola bilər).

2. daxil etmək

Daxil etmə bəndi faylları PHP skript koduna daxil etmək üçün də istifadə olunur. Tələb konstruksiyasından fərqli olaraq, daxil etmə konstruktu skript işləyərkən faylları PHP skript koduna daxil etməyə imkan verir.

fayl adını daxil edin;

3. bir dəfə tələb edin və bir dəfə daxil edin

Birdəfəlik daxil edilməli konstruksiyalardan istifadə edərək tələb_once və include_once, eyni faylın iki dəfə daxil edilməyəcəyinə əmin ola bilərsiniz. require_once və include_once konstruksiyaları requre və include ilə eyni şəkildə işləyir. Onların işindəki yeganə fərq ondadır ki, faylı daxil etməzdən əvvəl tərcüməçi göstərilən faylın əvvəllər daxil edilib-edilmədiyini yoxlayır. Əgər belədirsə, fayl yenidən daxil edilməyəcək.

Nəzarət strukturları

Giriş

Bu seriyanın ilk dörd fəslində biz riyazi ifadələrin və təyin operatorlarının təhlilinə diqqət yetirdik. Bu fəsildə biz yeni və maraqlı mövzuya diqqət yetirəcəyik: IF ifadələri kimi nəzarət konstruksiyalarının təhlili və tərcüməsi.

Bu mövzu mənim üçün çox əzizdir, çünki mənim üçün dönüş nöqtəsidir. Bu seriyada etdiyimiz kimi ifadə təhlili ilə oynadım, amma yenə də tam bir dili dəstəkləməkdən hələ çox uzaqda olduğumu hiss etdim. Axı, real dillərdə budaqlar, döngələr, alt proqramlar və bütün bunlar var. Ola bilsin ki, siz bu fikirlərin bəzilərini bölüşmüsünüz. Ancaq bir müddət əvvəl yazdığım strukturlaşdırılmış assembler preprosessoru üçün idarəetmə konstruksiyalarını həyata keçirməli oldum. Bunun artıq keçdiyim ifadəni təhlil etməkdən daha asan olduğunu kəşf edəndə təəccübləndiyimi təsəvvür edin. Yadımdadır: “Hey, bu asandır!” Bu dərsi bitirdikdən sonra, siz də eyni şəkildə hiss edəcəyinizə mərc etməyə hazıram.

Gəlin Kompilyator Yaradaq kitabından! Crenshaw Jack tərəfindən

Nəzarət Konstruksiyaları Giriş Bu seriyanın ilk dörd fəslində biz riyazi ifadələrin və tapşırıq operatorlarının təhlilinə diqqət yetirdik. Bu fəsildə biz yeni və maraqlı bir mövzuya diqqət yetirəcəyik: təhlil və

The C# 2005 Programming Language and the .NET 2.0 Platform kitabından. Troelsen Andrew tərəfindən

İterativ konstruksiyalar Bütün proqramlaşdırma dilləri təkrarlamanın sona çatması şərti yerinə yetirilənə qədər proqram kodu bloklarını təkrarlamaq imkanı verən konstruksiyalar təklif edir. Əgər proqramlaşdırma təcrübəniz varsa, o zaman C# dilində loop ifadələri sizin üçündür

Delphi kitabından. Nümunə ilə öyrənmək müəllif Parijski Sergey Mixayloviç

while və do/while konstruksiyaları while döngüsü müəyyən bir şərtə çatana qədər ifadələr bloku icra edilməli olduqda faydalıdır. Əlbəttə ki, bu, dövrənin dayandırılması şərtinin while dövrəsinin əhatə dairəsində müəyyən edilməsini tələb edir, əks halda siz

müəllif Raymond Erik Stiven

Budaqlanan konstruksiyalar Budaqlanan konstruksiyalar müəyyən şərtin yoxlanılması əsasında proqram kodunun bloklarından birinə keçid edir. Bunlara əgər və daxildir

Unix üçün proqramlaşdırma sənəti kitabından müəllif Raymond Erik Stiven

Siklik konstruksiyalar Object Pascal dilində proqram bloklarının tsiklik icrasını təşkil etmək üçün üç növ siklik konstruksiyalardan istifadə olunur: for-do, while-do və repeat-until. Onlar başlanğıc və son təbiətinə görə fərqlənirlər

MySQL: Peşəkar Bələdçi kitabından müəllif Pautov Aleksey V

"PHP proqramlaşdırma dili" kursu kitabından müəllif Savelyeva Nina Vladimirovna

20.3. Unix Dizayn Problemləri Planı 9 Unix-i təmizləyir, lakin dizayn ideyalarının əsas dəstinə yalnız bir yeni konsepsiya (şəxsi ad sahəsi) əlavə edir. Bununla belə, bu əsas ideyalarla bağlı ciddi problemlər varmı? 1-ci fəsil bir neçə mövzunu müzakirə etdi

XSLT Texnologiyası kitabından müəllif Valikov Aleksey Nikolayeviç

5.2.10. Flow Control Constructs IF, CASE, LOOP, WHILE, REPLACE ITERATE və LEAVE konstruksiyaları tam yerinə yetirilib.Bu konstruksiyaların bir çoxunda aşağıdakı bölmələrdə qrammatik spesifikasiyalarda göstərildiyi kimi başqa ifadələr var. Belə strukturlar yuvalana bilər. Misal üçün,

Computerra PDA N151 kitabından (12/24/2011-12/30/2011) müəllif Computerra jurnalı

Delphi-də Fundamental Alqoritmlər və Məlumat Strukturları kitabından müəllif Bucknell Julian M.

XML konstruksiyaları Elementlərə, atributlara və mətnə ​​əlavə olaraq sənədlərdə şərhlər, emal təlimatları və xarakter məlumatlarının bölmələri kimi digər konstruksiyalar da ola bilər. Bu əsas komponentlər çevik, lakin ciddi şəkildə uyğun olaraq istifadə olunur

Firebird DATABASE DEVELOPER'S GUIDE kitabından Borri Helen tərəfindən

Vannakh Departamenti: Hədiyyələr və Dizaynlar Müəllif: Mixail Vannakh 27 dekabr 2011-ci il tarixində nəşr olundu. Problem olduqca yorucu bir şeydir. Ancaq çətinliklərin xoş olduğu bir dövr var. Birinin ad gününə hazırlaşarkən dövrlər fərdi olur. Ya da kütləvi əyləncə dövrləri,

The Art of Shell Scripting Language Programming kitabından Cooper Mendel tərəfindən

Koddakı bu qəribə $ifdef strukturları hansılardır? Kitabda təqdim olunan bütün nümunə kodlar, bir neçə xüsusi qeyd edilmiş istisna olmaqla, Delphi 1, 2, 3, 4, 5 və 6-da, eləcə də Kylix 1-də tərtib ediləcək. (Lakin kompilyatorların gələcək versiyaları dəstəklənməlidir.

"Müqəddəs Müharibənin Sonu" kitabından. Paskal C vs müəllif Krivtsov M. A.

Proqramlaşdırma konstruksiyaları Aşağıdakı bölmələr PSQL tərəfindən tanınan proqramlaşdırma konstruksiyalarını müzakirə edir. BEGIN ... END Bloklar PSQL strukturlaşdırılmış dildir. Dəyişən bəyannamələrdən sonra prosedur ifadələri BEGIN və END bəyanat mötərizələrinə əlavə olunur. Davam edir

Müəllifin kitabından

Misal 16-9. Əgər/sonrada yönləndirmə #!/bin/bashif [ -z "$1" ]konstruksiya edir, sonra Filename=names.data # Defolt olaraq əgər fayl göstərilməyibsə.else Filename=$1fiTRUE=1if [ "$TRUE" ] # qurur "əgər doğrudursa" və "if:" də tamamilə məqbuldur. sonra echo $namefi adını oxuyun<"$Filename"# ^^^^^^^^^^^^# Читает только первую строку из файла.exit

Müəllifin kitabından

Müəllifin kitabından

2. Proqram təminatı dizaynları 2.1. Budaqlanma (seçim)