Döngüsel hesaplamalı veri işleme süreçlerinin programlanması. Döngüsel hesaplama işlemlerinin programlanması. For ifadesinin kullanımına bir örnek

Programlamada, genellikle aynı program ifadesi grubunun işlenenlerinin farklı değerleriyle tekrar tekrar yürütülmesini gerektiren görevler vardır. Bu tür işlemlere denir döngüsel ya da sadece döngüler. Döngüsel olarak tekrarlanan bir grup ifade, sözde döngü gövdesi, basit veya bileşik bir ifadeyle temsil edilebilir. Döngü gövdesinin bir kerelik yürütülmesini çağıracağız yineleme.

Bir programdaki döngünün gövdesinden önce her zaman şu gelir: döngü başlığı, tanımı içeren döngü operatörü ve yineleme sayısını (doğrudan veya dolaylı olarak) tanımlayan bir ifade. Döngünün gövdesinin döngü operatörünün işleneni olduğuna dikkat edin; dolayısıyla döngünün başlığı ve gövdesi programın bölünmez bir yapısal birimini oluşturur. Aşağıda " terimini kullanarak döngü operatörü", döngünün hem başlığını hem de gövdesini kastedeceğiz.

Tüm programlama sistemlerinde döngüleri düzenlemek için uzmanlaşmış döngü operatörleri kullanımı programcıyı döngüleri "manuel olarak" programlama ihtiyacından kurtarır. MathCAD bu tür iki tür operatörü destekler: önceden belirlenmiş döngü İçin (olarak da adlandırılır sayaçlı döngü) Ve ön koşullu döngü Sırasında . Bu operatörlerin yapısının açıklaması Tablo 5'te verilmiştir.

5.4.1 Operatör İçin

Yineleme sayısının önceden belirlendiği yani önceden bilindiği durumlarda bu operatör kullanılmalıdır.

Döngü başlığı Bu operatörün (sağ işlenen) adı verilen bir değişkeni içerir parametre(veya sayaç) döngü, Ve Değerler listesi bu parametre. Listenin öğelerinin sayısı aynı zamanda yineleme sayısını da belirler; her yineleme sırasında döngü parametresi başlıkta belirtilen listeden bir sonraki değeri alır.

Döngü parametresi dahili program değişkeni statüsündedir ve tüm özelliklerine sahiptir (bölüm 5.1.4'te açıklanmıştır). Kural olarak döngü parametresi, döngünün gövdesinde yer alan ifadelerin sağ tarafında kullanılır, ancak ifadelerin sol tarafında (yani yerel tanımın solunda) kullanılması resmi olarak yasaklanmamıştır. "f" operatörü). Döngünün gövdesinde bir parametre değiştirilmişse, değiştirilen değerinin yalnızca geçerli yinelemenin sonuna kadar geçerli olacağı unutulmamalıdır, çünkü bir sonraki yinelemenin başlangıcından önce parametre yine de döngüden bir sonraki değeri alacaktır. döngü başlığında belirtilen liste.

Resmi olarak, döngü gövdesinin ifadelerinde döngü parametresinin hiç kullanılmamasına izin verilir - bu durumda, parametre değerleri listesi herhangi bir rol oynamaz - yalnızca bu listenin uzunluğu önemlidir, bu da (muhtemelen anlamsız) yinelemelerin sayısı.

Son yinelemenin tamamlanmasının ardından, döngü ifadesini takip eden program ifadesi yürütülecektir. Bu durumda tamamlanan döngünün parametresi olarak kullanılan değişken sahip olduğu değeri korur. sonuncusunda aslında tamamlandı yineleme[*]. Operatör tetiklendiğinde döngüden "erken" çıkış mümkün olduğundan, bu değerin her zaman döngü başlığında belirtilen listedeki son değerle çakışmadığını unutmayın. Kırmak döngünün gövdesine dahil edilir.

Değerler listesi Döngü parametresi döngü başlığında " sembolünden sonra yazılır. Î ", bir kümeye üyeliği belirtir (bu sembolün manuel olarak girilmesine gerek yoktur - operatöre girildiğinde otomatik olarak görüntülenecektir) İçin ). MathCAD kullanımına izin verir üç form bu listedeki girişler: doğrudan transfer– liste öğeleri virgüllerle ayrılmış olarak açıkça belirtilir, parametre listeden değerleri göründükleri sıraya göre alır; sıralanmış değişken tarzında – listenin elemanları karşılık gelen aritmetik seriyi oluşturur; sıralamak– liste elemanları dizi elemanlarının değerlerini indeks sırasına göre sırayla alır (önce soldan sağa sütunlar, sonra yukarıdan aşağıya satırlar).

Şekil 21'de gösterilen üç program, operatörün farklı kullanımlarını göstermektedir İçin .

programı Gerçek(n) bir sayının faktöriyelini hesaplar N . Bu programdaki döngü operatörü, koşullu bir operatörün işleneni olan bileşik ifadenin bir parçasıdır Aksi takdirde. Döngü parametresi k bir tamsayı aritmetik serisinden değerler elde eder.

programı Ch(V,N,p) giriş vektörünü işler V , onu değerle değiştir P indeksleri ikinci giriş vektörünün elemanları tarafından belirtilen elemanlar N . Bu örnekte döngü parametresi değerlerinin listesi Ben bir dizi vektör öğesi tarafından tanımlanır N . Bu programların her ikisinin de giriş verisi kontrolü gerçekleştirdiğini ve gerçek program argümanlarının yanlış belirtilmesi durumunda ana algoritmanın yürütülmesini engellediğini unutmayın.

programı L(M,z) örnekte verilen V ), ayrıntılı yorumlar eşlik eder ve açıklama gerektirmez. Bu program, biri ifadeler arasında yer alan birden fazla döngü ifadesi kullanma olasılığını gösterir. vücut bir diğer. Kullanım İç içe geçmiş döngüler- çok boyutlu dizileri işlemek için kullanılan tipik bir teknik.

Şekil 21 – Döngü programlama örnekleri İçin


Şekil 22 operatörlerin kullanımını göstermektedir Kırmak Ve Devam etmek döngünün gövdesinde. Tipik olarak bu operatörlerin kendileri işlenenlerdir koşullu ifadeler Eğer veya Aksi takdirde .

Şebeke Kırmak ("iptal") kesintiye uğrar döngünün yürütülmesi ve kesintiye uğrayan döngü operatörünün ardından kontrolü operatöre aktarır. Operatörün Kırmak kesintiye uğradı iç içe geçmiş döngü, dış döngünün yürütülmesine devam edilecektir.

Şebeke Devam etmek ("devam et") farklı davranır - o döngünün yalnızca geçerli yinelemesini kesintiye uğratır ve kontrolü bu döngünün başlığına aktarır, ardından döngü yürütülür devam ediyor bir sonraki yinelemeden itibaren (elbette, kesintiye uğrayan yineleme son yineleme olmadığı sürece).

Şebeke Kırmak kullanımına izin verildi ve dıştan döngünün gövdesi. Bu durumda, tüm altprogramın yürütülmesi kesintiye uğrar ve onun gerçekten yürütülen son ifadesinin değerlendirilmesinin sonucu döndürülür.

Şekil 22 – Operatör kullanma örnekleri Kırmak Ve Devam etmek

İşlev ToplamN(V) yalnızca skaler sayısal veri içeren vektör öğelerini toplar ve geri kalan öğeleri atlar. İşlev Ters(V) elemanları orijinal vektörün karşılık gelen elemanlarının ters değerleri olan bir vektör oluşturur. Ayrıca, bir sonraki öğe "0" sayısını içeriyorsa veya sayısal türde bir skaler değilse, döngü kesintiye uğradı. Operatörün Kırmak son örnekte programı kesintiye uğratmaz ancak kontrolü operatöre devreder Geri dönmek , operatörün hemen ardından İçin .

5.4.3 Operatör Sırasında

Operatörden farklı olarak İçin , ifade başlığı Sırasında (çeviride - " Hoşçakal") yineleme sayısına ilişkin açık bir gösterge içermez - içerir mantıksal ifade değeri otomatik olarak hesaplanır başlamadan önce her bir sonraki yinelemenin yürütülmesi[†]. Bu ifade doğru olduğu sürece döngü yinelenmeye devam edecektir; Bir sonraki iterasyonun tamamlanmasından sonra ifade false olur olmaz, döngünün bir sonraki yinelemesi yürütülmeyecek ve ifadeyi takip eden program ifadesi kontrolü alacaktır. Sırasında .

Açıkçası, eğer döngü başlığına özdeş bir yanlış mantıksal ifade yerleştirilirse, bu döngü yinelemelerinin hiçbirini tamamlamayacaktır ve bu ifade aynı şekilde doğruysa döngü sonsuz olacaktır (ikinci duruma denir) döngü programlar). Bu tür durumların önüne geçmek için mantıksal bir ifadenin işlenenlerinin, değerlerini değiştiren bir veya daha fazla değişken içermesi gerekir. döngünün gövdesinde böylece döngü sonlu olur (döngüyü önlemek için başka yöntemler de kullanılabilir - örneğin, operatörü döngüden çıkmaya zorlamak) Kırmak ).

Operatörün kullanımına örnekler Sırasında Şekil 23'te gösterilmektedir. Aynı sorunu çözmek için üç seçenek verilmiştir: programların her biri F0 , F1 Ve F2 kaynak vektörün ilk elemanının indeksini döndürürV belirtilen değeri aşanz .

İlk program (örnek A ) sayaca bir tane ekler k döngünün gövdesinde Sırasında bir sonrakine kadar k orijinal vektörün inci elemanı belirtilen değeri aşmayacaktır z . Bundan sonra döngü sona erer ve program değişkenin son değiştirilen değerini döndürür. k , sorunun çözümü budur. Döngüden farklı olarak şunu unutmayın İçin , tezgah k burada onu ayrı ifadelerle işlemek gerekir: döngü operatöründen önce başlatın (yani ona bir başlangıç ​​​​değeri atayın) ve döngünün gövdesindeki değerini değiştirin.

Seçeneğin olduğunu görmek kolaydır A Programın ) önemli bir dezavantajı vardır: sorunun çözümü olmadığında, yani parametrenin değiştirildiği durumlarda programın döngü yapmasını engellemez. z vektörün en büyük öğesinin değerini aşıyor V . Bu örnekte, böyle bir durumda döngü gerçekte gerçekleşmeyecektir - ancak bu bizim programımızın değil, vektör indeksinin çıktısını kontrol edecek MathCAD sisteminin özelliğidir. V izin verilen değerlerin dışında ve bir hata mesajı üretecektir.

Bu dezavantajdan arınmış seçenek B ) döngünün gövdesinin bir sonraki indeks değerinin geçerliliği için ek bir kontrol içerdiği ve döngüyü operatörle zorla kestiği bir programın Kırmak uygun durumda bir kısa mesaj verilmesiyle.

Belki de bu sorunun en etkili çözümü seçenektir. V ), operatörü hiç kullanmayan Sırasında . Bu programda değişken k yalnızca "stil saflığını" korumak için kullanılır - döngü parametresinin işlenmesini hariç tutmak için Ben operatörün dışında İçin .

Şekil 23 – Döngü programlama örnekleri Sırasında

Çalışmanın amacı:

Döngüsel algoritmaların nasıl oluşturulacağını ve programlanacağını öğrenmek için döngüsel operatörleri inceleyin, while, do - while.

Kısa teorik bilgi

Döngü operatörleri, belirli eylemlerin (operatörler ve işlemler) birkaç kez tekrarlanması gerektiğinde kullanılır ve algoritmaların bu tür bölümlerine döngüler denir.

for döngüsü operatörü

for döngüsü ifadesinin temel biçimi şu şekildedir:

for (ifade_1; ifade_2; ifade_3)

Şebeke;

Nerede ifade_1– çevrim parametresinin başlangıç ​​değeri;

ifade_2– döngünün devamına ilişkin koşulların kontrol edilmesi;

ifade_3– döngü parametresinin değiştirilmesi (düzeltme);

Şebeke– C dilinde basit veya bileşik operatör.

Operatörün çalışma şeması şu şekildedir: yalnızca bir kez, önce ifade_1 hesaplanır, ardından ifade_2 kontrol edilir ve eğer “true” ise programın döngüsel bir bölümü çalıştırılır, ardından parametre düzeltilir ve bu şekilde devam eder. ifade_2 "yanlış" değerini alana kadar.

Örneğin: için (k=1; k<5; k++)

printf(“\n %d”, k);

Bu operatörün çalıştırılması sonucunda 1'den 4'e kadar olan sayılar bir sütuna yazdırılır.

Herhangi bir temel türdeki değişkeni döngü parametresi olarak kullanabilirsiniz.

Örneğin:

for(ch='a'; ch<=’z’; ch++) // Вывод на экран букв

printf(“%c”,ch); // Latin alfabesi

Programdaki for döngülerinin yapısını dikkatli bir şekilde kontrol etmek gerekir, böylece sonsuz bir döngüyle (bundan çıkış yoktur) karşılaşmazsınız.

Örneğin:

for(k=10; k>6;k++)

printf(“sonsuz döngü\n”);

Çıkış döngüsü aşağıdaki yollarla programın ilerisinde:

Ek şartla;

Aşağıdaki operatörleri kullanma:

kırmak;- break'in bulunduğu döngüden çıkış, kontrol döngüden sonra ilk yürütülen ifadeye aktarılır;

çıkış(int Kod);- programdan çıkın;

geri dönmek;- fonksiyondan çıkış;

Koşulsuz atlama operatörünü kullanma git<метка>;

Erken mevcut döngüsel adımın tamamlanması ek bir koşul veya operatör kullanılarak mümkün devam etmek geçerli döngü adımının yürütülmesini kesintiye uğratan, yani. döngünün geri kalanının ifadelerini atlar ve parametreyi ayarlamak ve koşulu kontrol etmek için kontrolü döngünün başlık ifadesine aktarır.

Kontrolün döngünün dışından içine aktarılması yasaktır.

Parantez içindeki for döngüsü ifadelerinden herhangi biri eksik olabilir ancak ";" sembolü düşürülemez.

Örneğin:

için(; ben<3; i++)

puts(“Merhaba!”);

Döngüsel while ve do-while ifadeleri

Döngüsel operatörün temel formu sırasında:

Süre (koşul)

Şebeke;

Nerede Şebeke

Döngü, koşul doğru olarak değerlendirildiği sürece çalışır; parantez içindeki ifade sıfırdan farklı bir sonuç döndürür. Bu, ön koşulu olan bir döngüdür; önce koşul kontrol edilir, ardından ifade yürütülür. Bu nedenle, koşulu hesaplamanın ilk sonucu 0 olsa bile while döngüsü bir kez bile çalıştırılmayacaktır.

Operatörün temel biçimi yaparken:

Şebeke;

while(koşul);

Nerede Şebeke basit, bileşik veya boş bir ifadedir.

Şebeke Yapmaksırasında– sonkoşulu döngü operatörü, yani önce ifade yürütülür ve ardından koşulun doğruluğu kontrol edilir. Do-while döngüsünde koşul döngünün sonunda kontrol edildiğinden döngü en az bir kez çalıştırılacaktır.

While ve do-while gibi döngülerde, for ifadesinde olduğu gibi döngüden erken çıkışa ve döngünün geçerli adımının erken tamamlanmasına yönelik aynı yöntemlere izin verilir, ancak ikinci durumda, for döngüsünden farklı olarak kontrol aktarılır. durumu kontrol etmek için. While ve do-while döngülerinde sonsuz bir döngü oluşmasını önlemek için, koşulun içerdiği değişkenlerin değiştirilmesini sağlamanız gerekir.

Örneğin:

için (i=1;i<=300;i++) // Печать целых чисел, кратных 5

if (i%5!=0) devam ederse;

printf(“%5d”,i);

Sonsuz döngülere örnekler:

Şebeke;

2) while(sayı_not_0) // Her zaman doğru!

Şebeke;

Şebeke;

while(sayı_not_0); // Herzaman doğru!

Döngü operatörleri arasında bir çıkış koşulunun olması gerekir.

İç içe geçmiş döngüler

İç içe geçmiş döngüler durumunda, bir döngü diğerinin içindedir, örneğin:

for(i=nn;i

for(j=mn;j

Şebeke;

Nerede Şebeke basit, bileşik veya boş bir ifadedir. İç döngü, dış döngünün koşulunu karşılayan i parametresinin her değeri için yürütülecektir.

Örnek:

for(i=1;i<10;i++) // Печать таблицы умножения

for(j=1;j<4;j++)

printf(“\n %d*%d=%2d”, i, j, i*j);

printf(“\n”);

For ifadesinin kullanımına bir örnek

Hesaplamak. Program ara ve nihai sonuçları yazdırmalıdır.

Program metni şöyle görünebilir

#katmak

#katmak

puts(“N Girin”);

scanf(“%d”,&N);

için (s=0, k=1; k<=N; k++) // В заголовке цикла можно выпол-

( // al ve çift atama

printf(" \n k=%d s=%f ", k, s);

printf("\n CEVAP: s=%f, Herhangi bir tuşa basın...",s);

Bireysel görevler için seçenekler

Fonksiyon değerleri tablosunu belirleyen bir program yazın en keyfi bir aralıkta [ A,B] argüman değişiklikleri X keyfi adımlarla H. Değerler a, b, h klavyeden girilir. Tablo şu sütunları içermelidir: sıra numarası, bağımsız değişken değeri X, fonksiyon değeri, artan veya azalan fonksiyona ilişkin mesaj, iki bitişik fonksiyon değerinin farkı.

Fonksiyonun maksimum ve minimum değerlerini belirleyin.

1. a=-p; b=p; h=0,4.

2. a=0,7; b=1.8; h=0,1.

3. a=-0,5; b=2,5; h=0,2.

4. a=-0,9; b=2.7; h=0,3.

5. a=-2; b=0,8; h=0,2.

6. a=-1.9; b=2.7; h=0,3.

7.a=-0,4p; b=0,4p; h=0,5.

8. a=-0.3p; b=1.3p; h=p/10.

9. a=-p/2; b= p/2; h=p/10.

10. a=-3; b=3; h=0,5.

“Döngüsel hesaplama süreçlerinin programlanması”

Çalışmanın amacı: döngüsel hesaplama süreçleri için algoritmaların derlenmesine ve karmaşık yapıdaki döngüsel programların düzenlenmesine yönelik yöntemlerin öğrenilmesi.

Teorik kısım

4.1.1. Döngüsel algoritmalar.

Döngü, birden fazla kez gerçekleştirilebilen bir dizi eylemdir.

Round-robin algoritması, bir veya daha fazla döngü içeren bir algoritmadır.

3 tür döngü vardır:

Ön koşullu döngü;

Son koşullu döngü;

Sayaçlı döngü (sayma döngüsü).

Bir döngünün yürütülmesi bazı mantıksal koşullarla ilişkiliyse, bir önkoşul veya sonkoşul içeren döngüler kullanılır.

Sayaç döngüleri, döngü gövdesinin yürütülmesinin önceden belirlenmiş sayıda tekrarlanması gereken bir sınıftır.

Döngüsel algoritmaların blok diyagramları şuna benzer:

1. Sayaçlı döngü.

2. Ön koşullu döngü. 3. Sonkoşullu döngü.

4.1.2 C++ programlama dilinde döngü operatörleri.

C++'da her döngü tipine karşılık gelen bir operatör vardır:

While döngüsüne benzer (önkoşullu);

Do...while (sonkoşullu) gibi döngü;

For (sayma) gibi döngü.

1.while gibi döngü operatörü

Giriş formu:

while (koşul) ifadesi;

burada: (koşul) – mantıksal ifade;

operatör – bir döngüde yürütülen döngünün operatörü veya gövdesi.

Döngünün gövdesi bileşik bir ifadeyse, operatör parantezleri (...) içine alınmalıdır:

süre (koşul)

operatör grubu

Böyle bir döngünün nasıl çalıştığının şeması: Koşul doğruyken döngünün gövdesi yürütülür ve koşul yeniden kontrol edilir, vb. Koşul yanlış olduğunda döngüden çıkılır.

2. Döngü operatörü do…while gibi

Giriş formu:

Şebeke;

while(koşul);

Böyle bir döngünün nasıl çalıştığının şeması: önce operatör yürütülür, ardından koşul kontrol edilir, koşul doğruysa operatör yürütülür ve koşul tekrar kontrol edilir, vb. Koşul yanlış olduğunda döngüden çıkılır.

Döngünün gövdesi bileşik bir ifadeyse, ön koşulu olan bir döngü için olduğu gibi, operatör parantezleri (...) içine alınmalıdır:



operatör grubu

while(koşul);

3. Döngü operatörü for gibi

Giriş formu:

Şebeke;

A, döngü parametresi için başlangıç ​​değerlerini ve gerekiyorsa diğer parametreler için başlangıç ​​değerlerini belirten bir başlangıç ​​ifadesidir. Örneğin:

i=0, x=0,5, p=1, s=0

B, döngüye devam etme koşulunu kontrol eden koşullu bir ifadedir. Örneğin:

C, döngü parametresinin ve gerekirse diğer parametrelerin artışını belirten bir artış ifadesidir ve bunlar bir listeye yazılır. Örneğin: x+=0,1, i++

4.1.3 Döngüsel hesaplama işlemi için C++ dilinde bir algoritma ve program derleme örneği.

Bir ifadenin değerini hesaplayın:

B– başlangıç ​​değeri, değeri klavyeden girilir ve değişmez;

A– 1'lik adımlarla aralıktaki değişiklikler;

sen– sonuç, değerleri ekranda görüntülenir.

Spesifikasyona göre a değişkeni bir tamsayı olduğundan sayma döngüsünde sayaç olarak kullanılabilir.

Bu sorunu bir sayma döngüsü kullanarak çözmeye yönelik algoritmanın blok şeması aşağıdaki gibidir:

#katmak

#katmak

#katmak

printf("b'yi girin: ");

scanf(“%f”,&b);

printf(“bir y\n”);

için (a=0;a<=10;a++)

printf(“%3d”,a);

printf(“%8.2f\n”,y);

y=(a-b)/sqrt(a);

printf(“%8.2f\n”,y);

Bu sorunu önkoşullu bir döngü kullanarak çözmeye yönelik algoritmanın blok şeması aşağıdaki gibidir:

Bu algoritmaya karşılık gelen C++ programının metni aşağıdaki gibidir:

#katmak

#katmak

#katmak

printf("b'yi girin: ");

scanf(“%f”,&b);

printf(“bir y\n”);

printf(“%3d”,a);

printf(“%8.2f\n”,y);

y=(a-b)/sqrt(a);

printf(“%8.2f\n”,y);

else printf(“ y mevcut değil\n”);

Bu sorunu sonkoşullu bir döngü kullanarak çözmeye yönelik algoritmanın blok şeması aşağıdaki gibidir:

Bu algoritmaya karşılık gelen C++ programının metni aşağıdaki gibidir:

#katmak

#katmak

#katmak

printf("b'yi girin: ");

scanf(“%f”,&b);

printf(“bir y\n”);

printf(“%3d”,a);

printf(“%8.2f\n”,y);

y=(a-b)/sqrt(a);

printf(“%8.2f\n”,y);

else printf(“ y mevcut değil\n”);

süre (bir<=10);

Pratik kısım

4.2.1 İşin gerçekleştirilmesi için gereklilikler:

Değişkenlerden birinin değer aralığı için 3 numaralı laboratuvar çalışmasından görevi tamamlayın. Değiştirilen değişken, değişim aralığı ve adımı Tablo 4'te gösterilmektedir. Bireysel görevde belirtilen iki tür döngü için algoritmaların ve programların blok diyagramlarını oluşturun (Tablo 4).

Sonuçların çıktısını, değişken parametrenin değerleri açıkça vurgulanacak ve her belirli değer için sonucun değerleri (Tablo 3'ün 2. sütunundan üç değişken) formda görüntülenecek şekilde resmileştirin bir masanın.

İşin sırası.

1. Görevin bir analizini yapın, sorunun bir açıklamasını formüle edin.

2. Algoritmaların blok diyagramlarını oluşturun.

3. C++'da bir program oluşturun. Başlangıç ​​verilerinin klavyeden girilmesini ve sonuçların ekrana çıkmasını sağlayın.

4. Programın işlevselliğini çeşitli başlangıç ​​verilerine göre kontrol edin.

5. Elde edilen sonuçları analiz edin.

Bireysel görevler için seçenekler.

Bireysel ödev seçenekleri, öğretmen günlüğündeki grup listesindeki öğrenci sayısına göre Tablo 4'ten seçilir.

Tablo 4. Bireysel görevler için seçenekler

HAYIR. Değişken Değişken Döngü türleri
10 ≤ a ≤ 10,Δ a=1
-4 ≤ d ≤ 4, Δ d = 0,5
-6 ≤ x ≤ 3, Δ x = 0,5
0 ≤ b ≤ 3 0, Δ b = 1,5 1. Ön koşullu, 2. Sayılabilir
-15 ≤ j ≤ 1 0, Δ j = 0,5 1. Ön koşullu, 2. Son koşullu
5 ≤ e ≤ 35,Δ e = 2 1. Sayılabilir, 2. Sonkoşullu
-5 ≤ m ≤ 15,Δ m = 1 1. Ön koşullu, 2. Sayılabilir
1 ≤ c ≤ 70,Δ c = 3 1. Ön koşullu, 2. Son koşullu
1,5 ≤ c ≤ 15,Δ c = 0,5 1. Sayılabilir, 2. Sonkoşullu
-8 ≤ b ≤ 28,Δ b = 2 1. Ön koşullu, 2. Sayılabilir
-4,5 ≤ x ≤ 11,5,Δ x = 0,5 1. Ön koşullu, 2. Son koşullu
-7 ≤ k ≤ 2,Δ k = 0,3 1. Sayılabilir, 2. Sonkoşullu
-1 ≤ m ≤ 21,Δ m = 1 1. Ön koşullu, 2. Sayılabilir
-2 ≤ e ≤ 34,Δ e = 2 1. Ön koşullu, 2. Son koşullu
-11 ≤ c ≤ 23,Δ c = 2 1. Sayılabilir, 2. Sonkoşullu
-13 ≤ p ≤ 50,Δ p = 3 1. Ön koşullu, 2. Sayılabilir
3,3 ≤ b ≤ 9,3,Δ b = 0,3 1. Ön koşullu, 2. Son koşullu
3,5 ≤ y ≤ 12,3,Δ y = 0,4 1. Sayılabilir, 2. Sonkoşullu
-7,5 ≤ a ≤ 5,7,Δ bir = 0,6 1. Ön koşullu, 2. Sayılabilir
-1,5 ≤ sa ≤ 1,2,Δ h = 0,1 1. Ön koşullu, 2. Son koşullu
0 ≤ sa ≤ 10,Δ h=0,5 1. Sayılabilir, 2. Sonkoşullu
-15 ≤ b ≤ 15, Δ b =2 1. Ön koşullu, 2. Sayılabilir
-7 ≤ l ≤ 3, Δ ben = 0,5 1. Ön koşullu, 2. Son koşullu
-5,5 ≤ b ≤ 6,5, Δ b = 0,5 1. Sayılabilir, 2. Sonkoşullu
1 ≤ k ≤ 9, Δ k = 0,4 1. Ön koşullu, 2. Sayılabilir
0 ≤ b ≤ 6,9,Δ b = 0,3 1. Ön koşullu, 2. Son koşullu
-3 ≤ v ≤ 9,Δ v = 0,6 1. Sayılabilir, 2. Sonkoşullu
-2 ≤ p ≤ 2,6,Δ p = 0,2 1. Ön koşullu, 2. Sayılabilir

4.3 Test soruları ve pratik görevler:

1. while ifadesi nasıl çalışır?

2. do ... while ifadesi nasıl çalışır?

3. for ifadesi nasıl çalışır?

4. Programda döngü oluşturan ifadelerin altını çizin.

5. while ve do ... while ifadeleri arasındaki fark nedir?

6. Programdaki bir döngü operatörünü diğeriyle değiştirin.

Programlamada sıklıkla kendini tekrarlayan süreçleri içeren problemlerle karşılaşırız. Dolayısıyla “” gibi bir kavramı bilmemiz ve kullanabilmemiz gerekiyor. döngüsel hesaplama süreçleri».

Acemi bir programcının genelleştirilmiş bir örnek kullanarak bunları anlaması kolay olacaktır. Üstelik tüm programlama dillerinde döngüleri uygulamanın yolları olduğunu anlamak önemlidir.

Programlamada döngü nedir?

Programlamada bir döngü, aynı eylemlerin veya hesaplamaların tekrar tekrar tekrarlanmasıdır, ancak değişkenlerin farklı değerleri ile aynı bağımlılıklara göre.

Döngü kavramıyla sadece programlamada karşılaşmıyoruz. Hayatımızın birçok alanında döngüler vardır.

Örneğin doğadaki su döngüsü hayatımızın doğal bir döngüsüdür.

Şimdi hesaplamalı döngülerde kullanılan genel kurallara ve kavramlara bakalım.

Döngüsel sürecin aşamaları

Genel olarak döngü 4 aşamada uygulanmalıdır:
  • Aşama 1 – döngünün hazırlanması (başlatma).
    Parametre ve döngü değişkeni için başlangıç ​​değerinin ayarlanması.
    Döngü parametresi– döngünün adım sayısını (döngünün tekrar sayısı) sayan bu değer.
    Döngü değişkeni döngünün her aşamasında değeri değişen bir niceliktir.
    Başlatma– bu, parametre ve döngü değişkeni için başlangıç ​​değerlerinin ayarlanmasıdır.
  • Aşama 2 – döngünün gövdesi.
    Bu, bir döngüdeki bir eylemin tekrar tekrar tekrarlanması veya değişkenlerin farklı değerleri ile aynı matematiksel bağımlılıklara dayalı hesaplamalardır.
  • Aşama 3 – döngünün değiştirilmesi (değişimi).
  • Aşama 4 – döngü yönetimi.
    Bu, döngünün devamı veya başlangıcı için bir durum kontrolüdür.
Pascal'da herhangi bir işlemi uygulayabilen 3 döngü operatörü vardır. algoritmik – döngüsel yapı :
  1. Parametreli döngü operatörü
  2. Ön koşullu döngü operatörü
  3. Son koşullu döngü operatörü
Aşağıdaki makalede bunlara ayrıntılı olarak bakacağız.

1. Programlarda döngüsel hesaplama süreçleri oluşturma yöntemleri.

2. Bilgisayara girildiNgerçek sayılar. Bu kümenin aritmetik ortalamasını gösteren bir program yazınız.

giriiş

Döngüsel programlar hemen hemen her yazılımda kullanılır. Bu durumda döngüler açık veya örtülü olabilir. Özellikle, gövdesi kesme tarafından tetiklenen sonsuz bir döngüde etkili bir şekilde çalışan kesme işleyicilerinde örtülü döngü mevcuttur. Altprogramlar (Windows uygulamalarının pencere işlevleri) de döngüseldir. Aşağıda, gövdesi işlevsel modüller içeren bir döngüye sahip programları ele alıyoruz.

Döngüsel süreç argümanın farklı değerleri için aynı formüller kullanılarak hesaplamaların tekrar tekrar yapıldığı bir hesaplama sürecidir.

Programlar döngüsel bir işlemin uygulanmasına döngüsel programlar denir.

Döngünün organizasyonu aşağıdaki aşamalara ayrılabilir:

döngünün (AND) hazırlanması (başlatılması);

döngü hesaplamalarının yapılması (döngü gövdesi) (T);

parametrelerin değiştirilmesi (M);

döngü sonu durumunun (U) kontrol edilmesi.

Bu adımların sırası (T ve M gibi) değişebilir. Çevrim sonu durum kontrolünün konumuna bağlı olarak alt ve üst uçlu çevrimler arasında bir ayrım yapılır. Altta sonlanan bir döngü için, döngünün gövdesi en az bir kez çalıştırılır çünkü önce hesaplamalar yapılır ve ardından döngüden çıkış koşulu kontrol edilir.


Üstten biten bir döngü durumunda, çıkış koşulu hemen karşılansa bile döngünün gövdesi bir kez bile çalıştırılmayabilir.

Döngü gövdesinin tekrar sayısı biliniyorsa veya önceden belirlenmişse, döngüye deterministik denir. Döngü gövdesinin tekrar sayısı önceden bilinmiyorsa, ancak hesaplamalarda yer alan parametrelerin (bazı değişkenler) değerlerine bağlıysa, döngüye yinelemeli denir.

Döngü Gövdesi- Bu, programın tekrar tekrar tekrarlanan bir bölümüdür.

Döngü parametresi döngünün her tekrarında yeni değerler alan bir değişkendir (döngüler basit veya karmaşık olabilir).

Döngünün n kez genel görünümü

Genel olarak, n kez bir döngü şu şekilde yazılır:

nc tekrar sayısı kez

Servis kelimesi nts (döngünün başlangıcı) ve kts (döngünün sonu) kesinlikle birbirinin altına yazılır ve dikey bir çizgiyle bağlanır. Bu satırın sağında tekrarlanabilir bir komut dizisi (döngü gövdesi) yazılır.

Tekrar sayısı keyfi bir tam sayıdır.

Algoritmayı çalıştırırken döngünün gövdesindeki komut dizisi belirtilen sayıda tekrarlanır. Algoritmik dilin kuralları herhangi bir tam sayıda tekrarın belirlenmesine izin verir. Sıfır veya hatta negatif olabilir. Bu durumlar hatalı olarak kabul edilmez, döngünün gövdesi bir kez bile çalıştırılmayacak ve bilgisayar cc'den sonra yazılan komutları hemen yürütmeye başlayacaktır.

Şu ana kadarki döngünün genel görünümü

Genel olarak döngü şu anda şu şekilde yazılmıştır:

henüz durum yok

| döngü gövdesi (komut dizisi)

Bir döngü gerçekleştirirken bilgisayar aşağıdaki eylemleri tekrarlar:

a) while fonksiyon sözcüğünden sonra yazılan koşulu kontrol eder;

b) koşul karşılanmazsa döngünün yürütülmesi sona erer ve bilgisayar cc'den sonra yazılan komutları yürütmeye başlar. Koşul karşılanırsa bilgisayar döngünün gövdesini çalıştırır, koşulu yeniden kontrol eder, vb.

Döngünün genel görünümü

i1'den i2'ye i için nc

| döngü gövdesi (komut dizisi)

Burada i bir tamsayı türü değerinin adıdır, i1, i2 isteğe bağlı tamsayılar veya tamsayı değerlerine sahip ifadelerdir. Döngünün gövdesi i = i1, i = i1 + 1, i1 + 2, …i = i2 için sırayla yürütülür.

Algoritmik dilin kuralları herhangi bir i1, i2 tamsayısının belirtilmesine izin verir. özellikle i2, i1'den küçük olabilir. bu durum bir hata olarak kabul edilmez - sadece döngünün gövdesi bir kez bile çalıştırılmayacak ve bilgisayar hemen cc'den sonra yazılan komutları çalıştırmaya başlayacaktır.

N kez döngü yapın ve while döngüsü yapın

Döngüler n kez ve şimdiye kadar algoritmik dilde hemen hemen aynı şekilde biçimlendirilir. Bu şaşırtıcı değil, çünkü bu komutların her ikisi de bir döngüyü (tekrarlanan bir komut dizisi) tanımlar. Nts ve kts hizmet sözcükleri bir döngünün yürütülmekte olduğunu belirtir ve döngü başlığı bunun yürütülmesi için özel mekanizmayı belirtir.

Ancak bu iki döngünün önemli bir farkı var. Bilgisayar bir döngüyü n kez yürütmeye başladığında, döngünün gövdesini kaç kez tekrarlaması gerektiğini bilir. Bir döngü yürütülürken durum henüz böyle değildir: bilgisayar her seferinde döngünün durumunu kontrol eder ve yürütmenin ne zaman biteceğini önceden belirleyemez. Şimdilik bir döngünün tekrar sayısını ancak döngü tamamlandıktan sonra öğrenebilirsiniz.

Bu, hangi durumlarda hangi döngünün kullanılması gerektiğini açıkça ortaya koyar. Döngü başladığında tekrar sayısı biliniyorsa döngüyü n kez kullanmak daha uygun olur. Tekrar sayısı önceden belirlenemiyorsa bir döngü gereklidir.

Örneğin bir otomatik kontrol programı Şekil 2'de gösterilen yapıya sahiptir. 1. Döngüye dahil olan modüller(aynı zamanda kesme işleme modülleri), her biri bir giriş ve bir çıkışa sahip olan modüller, tipik olarak modüllerin mevcut döngüde bir değer atanan statik değişkenler içermesi ve bu değişkenlerin analizinin bir sonraki döngüde gerçekleştirilmesi gibi karakteristik özelliğe sahiptir. . Böylece, bahsedilen değişkenler, modülün mevcut programın sonundaki veya bir sonraki program döngüsünün başlangıcındaki durumunu karakterize eder. Aşağıda döngüsel programların yalnızca bu tür modüllerini ele alacağız ve bunları kısaca MCP olarak adlandıracağız.


Şekil 1. Sonsuz döngüye sahip bir kontrol programının tipik yapısı.

MCP'ler, karmaşıklığının özel kriterlere göre değerlendirilmesi gereken çeşitli bir yapıya sahiptir. V.V. Lipaev, yazılım modüllerinin karmaşıklığı için uygun ve objektif bir kriter önerdi: modülün kontrol grafiğindeki yolların sayısı ve toplam uzunluğu. Yalnızca koşullu ve seçim ifadeleri dikkate alınır. Ancak bu kriter statik belleğe sahip bir MCP için açıkça yeterli değildir, çünkü bir MCP'yi analiz ederken önceki döngüde ayarlanan tüm statik değişkenlerin değerlerini hatırlamak gerekir. Ayrıca C ve Pascal gibi yaygın olarak kullanılan programlama dillerinde uzun süredir bilinen yapısal programlama dışında algoritma ve programların standardizasyonuna yönelik herhangi bir öneri bulunmamaktadır. Bu makale MCP ile ilgili bu boşlukları doldurmayı önermektedir.

2. Döngüsel program modüllerinin parçaları

İki terminalli bir parça veya basitçe bir parça, söz konusu MCP'lerin yapılandırılmış olduğu varsayımı altında, bir giriş ve bir çıkışa (döngü operatörleri dahil) sahip bir programın bir bölümü olarak kabul edilecektir. En basit parça tek bir ifadeyi içerir. Bir parça dizisi de bir parçadır. MCP ise bir parçadır ve bir dizi parçadan oluşur.

Karar tablolarını uygulayan modüllerin yapısını sentezlemek için bağımsız parçalar yöntemi önerilmiştir. Bu durumda, modül parçaları dizisinin herhangi bir yerine eklenebilen bir parçanın bağımsız olduğu kabul edilir. Böyle bir parçanın konumunun bağımsızlığı, içinde analiz edilen verilerin belirtilen parça dizisinde üretilmemesi ve bağımsız parçada oluşturulan verilerin bu parça dizisinde analiz edilmemesi nedeniyledir. Bu nedenle, bağımsız parçalar paralel (sözde paralel) olarak yürütülebilir. İncirde. Şekil 2, iki bağımsız parçaya sahip bir modül için olası uygulama seçeneklerini göstermektedir. “a” ve “b” seçeneklerinde parçalar programın özünü bozmadan yeniden düzenlenir; “c” seçeneğinde parçalar paralel olarak uygulanır.


İncir. 2. Bağımsız parçalara sahip bir modülü uygulama seçenekleri:

a) ve b) - sıralı uygulama,

c) - paralel uygulama: çift yatay çizgi programın paralelleştiğini, kalın yatay çizgi ise paralel süreçlerin tamamlandığını gösterir.

Bağımlı bir parça, konumu modüldeki başka bir parçanın/parçaların konumuna bağlı olan parçadır. Yukarıya ve aşağıya bağımlı parçalar arasında ayrım yapacağız. Üst bağımlı parça her zaman bu (bağımlı) parçada kullanılan değişkenlerin oluşturulduğu parçanın altında bulunmalıdır. Alttan bağımlı bir parça her zaman bu parçada oluşturulan değişkenleri kullanan bir parçanın üzerine yerleştirilmelidir. Biri yukarıdan ikinciye, ikincisi aşağıdan birinciye bağımlı olan iki bağımlı parçaya karşılıklı bağımlı parçalar adı verilecektir. Değiştirilemezler ve paralel olarak uygulanamazlar. İncirde. Şekil 3, karşılıklı bağımlı parçalara sahip bir modülün örneğini göstermektedir. Karşılıklı olarak bağımlı parçalar arasında, onlara bağımlı veya bağımsız başka parçalar da olabilir. Şek. 3. Bağımlı parçalara sahip modül.

Modüldeki konumu kesinlikle sabit olarak tanımlanan bağımlı bir parçayı çağıracağız. Örneğin, klavyeden girilen bir karakteri tanıma modülünde, ilki, gerçek karakter girişinin alttan bağımlı parçası olmalıdır. Bir modülün “başlangıç” ve “son” operatörleri sabit parçalardır.

Kesinlikle bağımsız parçalar mevcut değildir, çünkü herhangi bir modülde belirtilen başlangıç ​​ve bitişin sabit parçaları vardır. Bu nedenle, genel olarak bağımsız bir parça, karşılıklı olarak bağımlı iki parçayla sınırlı olası bir konum alanına sahiptir. Yani, bağımsız bir parçanın daha kesin bir tanımı şu şekildedir: iki sabit parçaya göre bağımsız olarak, belirtilen sabit parçalarla yukarıdan ve aşağıdan sınırlanan parçalar dizisinin herhangi bir yerine yerleştirilebilen bir parça diyeceğiz.




Tepe