Döngüsel süreçlerin programlanması. Döngüsel bilgi işlem süreçleri Erişimde döngüsel bilgi işlem süreçlerinin programlanması

Ç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.

Şebeke döngü için

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 ";" simgesi 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.

2 numaralı laboratuvar çalışması

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

İşin amacı

C++'da döngü operatörlerinin incelenmesi.

Teorik kısım

Döngü- üst düzey programlama dillerinde, bir dizi talimatın birden fazla yürütülmesini düzenlemek için tasarlanmış bir tür kontrol yapısı. Bir döngü, herhangi bir şekilde düzenlenmiş, tekrar tekrar yürütülen herhangi bir talimat dizisi olarak da adlandırılabilir.

Tekrar tekrar yürütülmek üzere tasarlanmış talimatlar dizisine ne ad verilir? döngünün gövdesi . Bir döngünün gövdesinin bir kez çalıştırılmasına denir yineleme . Yinelemenin tekrar mı gerçekleştirileceğini yoksa döngünün biteceğini belirleyen ifadeye denir. çıkış koşulu veya Döngünün sonu için koşul. Geçerli yineleme numarasını saklayan değişkene denir yineleme sayacı döngü veya sadece tezgah döngü. Bir döngünün mutlaka bir sayaç içermesi gerekmez; birden fazla sayaç olabilir; döngüden çıkma koşulu, döngüde değişen birkaç değişkene bağlı olabilir.

Herhangi bir döngünün yürütülmesi, başlangıçta döngü değişkenlerinin başlatılmasını, çıkış koşulunun kontrol edilmesini, döngü gövdesinin yürütülmesini ve döngü değişkeninin her yinelemede güncellenmesini içerir. Buna ek olarak, çoğu programlama dili döngünün erken kontrolü için araçlar sağlar; örneğin döngü sonlandırma operatörleri, yani çıkış koşulunun doğruluğuna bakılmaksızın döngüden çıkmak (C dilinde - break) ve yineleme atlama operatörleri (C dilinde - devam edin).

Aşağıdaki döngü türleri ayırt edilir.


1. Koşulsuz döngüler. Döngüler , çıkışı program mantığı tarafından sağlanmayan. Atipik doğaları nedeniyle, programlama dilleri sonsuz döngüler oluşturmak için özel sözdizimsel araçlar sağlamaz, bu nedenle bu tür döngüler, sıradan (veya koşullu) döngüler. Örneğin C dili bir döngü kullanır için(;;) boş bölümlerle.

2. Koşullu döngüler. Bunlar, yürütülmesi döngü gövdesinin başında veya sonunda kontrol edilen bazı koşullar tarafından kontrol edilen döngülerdir. Buna göre koşullu döngüler bir önkoşul ve bir sonkoşulla birlikte gelir. Ön koşulu olan bir döngü, başlamadan önce belirtilen bazı koşullar doğru olduğu sürece çalışan bir döngüdür. Bu durum kontrol edilir önce döngü gövdesinin yürütülmesi, dolayısıyla gövde bir kez bile çalıştırılamayabilir (koşul en baştan yanlışsa). Çoğu prosedürel programlama dilinde operatör tarafından uygulanır. sırasında, dolayısıyla ikinci adı while döngüsüdür. C++'da bu döngü şuna benzer:

sırasında(<условие>)

<тело цикла>

Sonkoşullu döngü - koşulun kontrol edildiği döngü sonrasında döngü gövdesinin yürütülmesi. Bu, döngünün her zaman en az bir kez yürütüldüğü anlamına gelir. Pascal'da bu döngü operatör tarafından uygulanır. e kadar tekrar edin, C'de - yaparken, Örneğin:

<тело цикла>

sırasında(<условие продолжения цикла>);

Farklı dillerde döngü koşulunun sonkoşulla kullanımında bazı farklılıklar vardır. Pascal'da ve ondan türetilen dillerde böyle bir döngünün koşulu şu şekilde yorumlanır: çıkış koşulu- Koşul doğru olduğunda döngü sona erer. C'de - nasıl devam koşulu(koşul yanlış olduğunda döngü sona erer; bu tür döngülere bazen "while döngüsü" adı verilir).

Ortadan ayrılan bisiklet- koşullu döngünün en genel biçimi. Sözdizimsel olarak böyle bir döngü üç yapı kullanılarak oluşturulur: döngünün başlangıcı, döngünün sonu ve döngüden çıkma komutu. Start yapısı programda döngünün gövdesinin başladığı noktayı, end yapısı ise gövdenin bittiği noktayı tanımlar. Gövdenin içinde döngüden çıkmak için bir komut bulunmalıdır; bu komutun yürütülmesi üzerine döngü sona erer ve döngü sonu yapısının ardından kontrol operatöre aktarılır. Doğal olarak döngünün birden fazla yürütülebilmesi için çıkış komutunun koşulsuz olarak değil, yalnızca döngüden çıkma koşulu karşılandığında çağrılması gerekir.

Bu tür döngünün ana özelliği, döngünün başlangıcından sonra ve çıkış komutundan önce bulunan döngü gövdesi kısmının her zaman yürütülmesidir (ilk yineleme sırasında döngü çıkış koşulu doğru olsa bile) ve çıkış komutundan sonra bulunan döngü gövdesi son yinelemede yürütülmez. Orta çıkış döngüsüyle, hem bir önkoşul döngüsünü (çıkış komutunu döngü gövdesinin başına yerleştirerek) hem de bir sonkoşul döngüsünü (çıkış komutunu döngü gövdesinin sonuna yerleştirerek) kolayca modelleyebilirsiniz.

Sayaçlı döngü, belirli bir değişkenin değerini belirli bir adımla belirli bir başlangıç ​​değerinden son değere değiştirdiği ve bu değişkenin her değeri için döngünün gövdesinin bir kez yürütüldüğü bir döngüdür. Çoğu prosedürel programlama dilinde operatör tarafından uygulanır. için Sayacı ("döngü değişkeni" olarak adlandırılan), gereken geçiş sayısını (veya sayacın sınır değerini) ve muhtemelen sayacın değiştirildiği adımı belirten.

C gibi bazı dillerde ve ondan türetilen diğer dillerde döngü için Sayaçlı bir döngünün sözdizimsel biçimine rağmen aslında önkoşulu olan bir döngüdür. Yani C'de döngü yapısı şöyledir:


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

Döngü gövdesi

aslında yapıyı yazmanın başka bir şeklidir:

bu arada (ben< 10)

Döngü gövdesi

Yani for yapısında, önce döngüyü başlatmak için rastgele bir cümle yazılır, sonra bir devam koşulu yazılır ve son olarak döngünün her gövdesinden sonra bazı işlemler gerçekleştirilir (bunun sayacı değiştirmek zorunda değildir; bir işaretçiyi veya tamamen alakasız bir işlemi düzenliyorsanız). Bu tür diller için yukarıdaki sorun çok basit bir şekilde çözülür: sayaç değişkeni tamamen tahmin edilebilir şekilde davranır ve döngünün sonundaki son değerini korur.

C++ dilinde döngülerin organizasyonu

1. Döngü için.

Gerekli yineleme sayısı önceden bilindiğinde for operatörünü kullanan bir döngünün kullanılması uygundur. Bu operatörün sözdizimi şöyledir:

for (döngü başlamadan önceki eylem;

döngü devam koşulu;

her döngü yinelemesinin sonundaki eylemler) (

döngü talimatı;

döngü talimatı 2;

döngü talimatı N;

Bu girişin özel bir durumu vardır (sayaçlı):

for (sayaç = değer; sayaç< значение; шаг цикла)

döngü gövdesi;

İlk olarak sayaca ilk değer atanır ve ardından noktalı virgül gelir. Daha sonra döngü sayacının son değeri ayarlanır. Sayaç değeri belirlenen limite ulaştığında döngü sona erer. Daha sonra döngü adımı ayarlanır - döngü sayacının her geçişte artacağı veya azalacağı değer.

Örnek: 1'den 1000'e kadar tüm sayıların toplamını saymak.

#katmak

ad alanı std'sini kullanma;

int ben; // döngü sayacı

int toplam = 0; // 1'den 1000'e kadar olan sayıların toplamı.

setlocale(0, "");

için (i = 1; ben<= 1000; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

2. While döngüsü.

Döngülerin organizasyonu sırasında veya yaparkengerekli yineleme sayısı önceden bilinmediğinde kullanımı uygundur. Döngü Söz Dizimi sırasında C++'da şöyle görünür.

while (Koşul) (

Döngü gövdesi;

Bu döngü parantez içinde belirtilen koşul doğru olduğu sürece yürütülür. Bir while döngüsü kullanarak 1'den 1000'e kadar sayıların toplanmasına ilişkin örnek bir uygulama:

#katmak

ad alanı std'sini kullanma;

setlocale(0, "");

bu arada (ben< 1000)

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

3. While döngüsü yapın

Döngü yaparken farklı sırasında yani bir döngü çalıştırıldığında, koşuldan bağımsız olarak döngünün bir geçişi yürütülecektir. Döngü kullanarak 1'den 1000'e kadar sayıların toplamını bulma problemini çözmeye yönelik bir program yaparken:

#katmak

ad alanı std'sini kullanma;

setlocale(0, "");

int ben = 0; // döngü sayacını başlatıyoruz.

int toplam = 0; //toplam sayacını başlatıyoruz.

yap (//bir döngü gerçekleştir.

) iken (ben< 1000); // пока выполняется условие.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

1. Seçilen seçeneğe karşılık gelen problemi çözmek için C++ dilinde bir program geliştirin.

2. Programı girin, hata ayıklayın ve derleyin. Doğru çalışıp çalışmadığını kontrol edin.

1. Program algoritmasının blok diyagramı.

2. Yorumlarla birlikte program listesi.

3. Kontrol çalışmalarının sonuçları.

Kontrol soruları

1. Bir döngü, döngü gövdesi ve yinelemeyi tanımlayın.

2. Döngüden, yineleme sayacından çıkmanın koşulu nedir?

3. Herhangi bir döngünün yürütülmesi hangi aşamaları içerir?

4. Sonkoşullu bir döngü nasıl çalışır?

5. Ön koşul döngüsü nasıl çalışır?

6. Sayaçlı döngü nasıl çalışır?

7. For ifadesi kullanılarak döngü nasıl uygulanır?

8. While operatörü kullanılarak döngü nasıl uygulanır?

9. Do while ifadesi kullanılarak döngü nasıl uygulanır?

1. Aşağıdaki karakter dizisini görüntüleyin

2. Bir tamsayı dizisi girin (0, dizinin sonudur), pozitif sayılar arasındaki en küçük ile negatif sayılar arasındaki en büyük arasındaki farkı bulun.

3. N sayıda tamsayıdan oluşan bir dizi girin, tek sayıların çarpımı ile negatif sayıların en büyüğü arasındaki farkı bulun.

4. Bir tamsayı dizisi girin; 0, dizinin sonudur. Dizinin 3, 5 ve 7'nin katı olan en az iki sayı içerip içermediğini belirleyin.

5. N tam sayı dizisini girin. 11'in katları arasında en büyük sayıyı bulun.

6. Bir tamsayı dizisi girin; 0, dizinin sonudur. Dizinin en az üç negatif çift sayı içerip içermediğini belirleyin.

7. N gerçek sayı dizisini girin. 20'den büyük sayılar arasında en küçük sayıyı bulun.

8. Bir tamsayı dizisi girin; 0, dizinin sonudur. 5'in katı olmayan, 7'nin katı olan pozitif sayıların sayısını ve dizinin negatif elemanlarının toplamını hesaplayın.

9. N gerçek sayı dizisini girin. Dizinin 7'ye bölünebilen elemanları arasındaki aritmetik ortalamayı belirleyin.

10. Bir sayı dizisi girin; 0, dizinin sonudur. Dizinin kesinlikle azalan olup olmadığını belirleyin.

12. Bir tamsayı dizisi girin; 0, dizinin sonudur. Dizinin en az iki bitişik pozitif sayı içerip içermediğini belirleyin.

13. N gerçek sayı dizisini girin. Dizinin dönüşümlü olup olmadığını belirleyin.

14. N gerçek sayı dizisini girin. Dizinin minimum pozitif ve maksimum negatif elemanları arasındaki farkı belirleyin.

15. 1'den N'ye kadar olan aralıkta dördün katı olan son üç sayıyı bulun. Bu sayıların toplamını hesaplayın.

16. Aşağıdaki karakter dizisini görüntüleyin

18. N1'den N2'ye kadar olan aralıkta 5'e bölünmeyen son üç sayının çarpımını hesaplayınız.

19. 1'den K'ya kadar olan aralıkta dörde bölünemeyen çift sayıların aritmetik ortalamasını hesaplayın.

"Arşivi indir" butonuna tıklayarak ihtiyacınız olan dosyayı tamamen ücretsiz olarak indireceksiniz.
Bu dosyayı indirmeden önce, bilgisayarınızda talep edilmeden duran iyi makaleleri, testleri, dönem ödevlerini, tezleri, makaleleri ve diğer belgeleri düşünün. Bu sizin işiniz, toplumun kalkınmasına katılmalı, insanlara fayda sağlamalı. Bu çalışmaları bulun ve bilgi tabanına gönderin.
Bizler ve bilgi tabanını çalışmalarında ve çalışmalarında kullanan tüm öğrenciler, lisansüstü öğrenciler, genç bilim insanları size çok minnettar olacağız.

Belge içeren bir arşivi indirmek için aşağıdaki alana beş haneli bir sayı girin ve "Arşivi indir" butonuna tıklayın

Benzer belgeler

    Excel 2013'te “Mağazalar” rapor sayfasının hazırlanması. Microsoft Office ailesinden tablolarla çalışma. Pasta grafiklerinin ve histogramların, grafiklerin oluşturulması. Fonksiyonların çizelgelenmesi için prosedürlerin geliştirilmesi. VBA'da kullanıcı işlevlerini programlama.

    kurs çalışması, eklendi 04/03/2014

    Microsoft Office Paketi. MS Excel elektronik tablosu. Ekran formu oluşturma ve veri girme. Formüller ve işlevler. MS Excel kullanıcı fonksiyonlarının açıklanması. Problemlerin fiziksel formülasyonu. Değişkenlerin kabul edilebilir değerleri için sınır koşullarının belirlenmesi.

    kurs çalışması, eklendi 06/07/2015

    Microsoft Excel'in yerleşik işlevlerini kullanma özellikleri. Tablolar oluşturmak, bunları verilerle doldurmak, grafikler çizmek. Uygulama paketlerini kullanarak sorgular gerçekleştirmek için matematiksel formüller uygulayın. Bilgisayar için teknik gereksinimler.

    kurs çalışması, eklendi 04/25/2013

    Dosya organizasyonu ve erişim. Dosya işlemleri. Yerleşik G/Ç işlevlerini kullanarak programlama; If-else, Vaka seçme operatörünü kullanarak doğrusal, dallara ayrılan ve döngüsel hesaplamalı süreçler; diziler ve matrisler.

    kurs çalışması, eklendi 24.05.2014

    Microsoft Excel elektronik tablo işlemcisi, tablolar şeklinde sunulan ekonomik bilgilerin işlenmesi sürecini otomatikleştirmek için tasarlanmış bir uygulama programıdır; hesaplamalar için formüllerin ve fonksiyonların uygulanması; komplo kurmak.

    özet, 02/03/2013 eklendi

    “İnsan-Üretim-Doğa” sisteminin etkileşimini sağlayacak hesaplamalı süreçlerin FORTRAN'da programlanması. Çevre kirliliği düzeyini ve atık işleme maliyetlerini hesaplamak amacıyla döngüleri derlemek için dizilerin kullanılması.

    kurs çalışması, eklendi 30.05.2014

    Verilen bir matematiksel ifadeyi kullanarak fonksiyon grafiklerini çizecek bir uygulama oluşturma. "Matematiksel fonksiyonların üreteci" programının geliştirilmesi. Matematiksel bir ifade girmek için bir fonksiyon sihirbazı oluşturma, test etme.

    tez, 16.02.2016 eklendi

Programlamada, genellikle aynı grup program ifadesinin 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ü, bir koşullu 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 koşullu operatörlerin işlenenleridir 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 sonuncusu 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) vektörün yalnızca sayısal türdeki skaler verileri içeren öğ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çermiyor - şunu içeriyor: 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ştiğ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

DÖNGÜSEL HESAPLAMA SÜREÇLERİNİN PROGRAMLANMASI

Temel bilgiler

Bir ifadenin veya ifadeler grubunun farklı argüman değerleri için tekrar tekrar yürütüldüğü işleme ne ad verilir? döngüsel süreç. VBA, aşağıdaki türlerde tekrarlanan eylemleri gerçekleştirmek için döngü ifadeleri kullanır:

Şebeke parametreli döngü Döngü gövdesinin kaç kez tekrarlanması gerektiği önceden biliniyorsa yapısı kullanılan – Next için:

Sayaç = başlangıç_değeri için Daha sonra final_value Adım adım blok_of_operators

Sayaçlı sonraki

operatörler ön koşullu döngü veya döngü gövdesinin bilinmeyen sayıda tekrarına sahip bir döngüyü düzenlemek için kullanılan sonkoşul:

Döngü Tasarımı

Döngü Tasarımı

bir önkoşulla şu forma sahiptir:

bir sonkoşulla şu forma sahiptir:

Şart iken yap

ifade_blok

ifade_blok

Döngü While koşulu

koşuluna kadar yap

ifade_blok

ifade_blok

Koşula kadar döngü

Koşul iken

ifade_blok

Ekipman yenileme için önerilen yatırım projesinin karlılık endeksini belirlemek için özel bir form geliştireceğiz ve bir program oluşturacağız, eğer ilk yatırım miktarı (IP) 10.000 bin ruble ise, indirim oranı r =% 10 ve beklenen nakit akışları aşağıdaki gibidir:

Nakit akışı (DPk B),B bin ruble

Kullanıcı formunun (Şekil 1) gibi görünmesine izin verin ve 1-5 yıllarındaki nakit akışlarının değerleri “Örnek 1” çalışma sayfasının hücrelerinden okunur (Şekil 2).

Form nesnelerinin özellikleri Tablo 1'de sunulmaktadır.

Pirinç. 1. “Karlılık Endeksi” Formu

karlılık

yatırım projesi"

formülle hesaplanır

∑n

DPk

kızılötesi =

k = 1 (1+r)

burada n, nakit tahsilatların geleceği yıl sayısıdır.

Pirinç. 2. Nakit akış dağıtım tablosu

tablo 1

Mülk

Mülk

Başlık = Dizin kirası-

Başlık = Orijinal boyut

yatırımın beyazlığı

yeni yatırımlar

proje

Başlık = İndirim oranı

Başlık = Kârlılık Endeksi

Başlık = Temizle

Başlık = Çıkış

“Hesapla” butonuna tıklama olayını işlemek için aşağıdakileri girin

Özel Alt calc_Click()

‘değişken türünü ayarla

Dim pv, dp, i, n Tam Sayı Olarak

Dim r, s Tekli Olarak

'değişken değerlerini okuma

pv = Val(txtPV.Text)

r = Val(txtSD.Text) / 100

n = Val(InputBox("Girilen yıl sayısını giriniz)

Gelmek

parasal

makbuzları", "Veri girişi"))

‘nakit akışı değerlerinin okunması

dp = Hücreler(2, i + 2)

'toplam

txtIR.Text = Round(s / pv, 2) 'yuvarlama ve sonucun çıktısı

Round(N, k) işlevi, N sayısını k ondalık basamağa yuvarlar.

Daha sonra Araç Çubuğu Düğmesi öğesini kullanma Kontroller“Karlılık Endeksi Formu” işlemini başlatmak için tablonun altına “Formu Aç” butonunu yerleştirelim (Şekil 3). Bu prosedürün kodu şöyle görünür:

Özel Alt FormuKarlılık Index_Click()

Pirinç. 3. Bir yatırım projesinin karlılık endeksinin belirlenmesi

Oluşturulan “Formu Aç” butonunu kullanarak formu başlatıyoruz ve yatırım projesinin karlılık endeksini hesaplıyoruz (Şekil 3).

Özel bir form geliştirelim ve rakamlarının kareleri toplamı 13'e bölünebilen tüm iki basamaklı sayıları bulan bir program oluşturalım.

Bu özel formu oluşturmak için VB editörüne gidelim (örnek 1'deki aynı MS Excel çalışma kitabında kalacağız) ve başka bir form ekleyelim (Şekil 4).

Form nesnelerinin özellikleri Tablo 2'de sunulmaktadır.

Düğme tıklama olaylarını işlemek için

aşağıdaki kod:

Özel Alt calc_Click()

Pirinç. 4. Örnek 2'deki form

Label2.Caption = ""

'İki basamaklı bir sayının ilk rakamının tanımı'

'İki basamaklı bir sayının ikinci basamağının tanımı'

If (i1^2+i2^2) Mod 13=0 Sonra Label2.Caption = Label2.Caption+Str(i)+" "

Özel Alt clean_Click()

Label2.Caption = ""

Özel Alt çıkışForm_Click()

Tablo 2

Mülk

Başlık = Örnek 2

Başlık = İki basamaklı sayılar, toplam

13'e bölünebilen sayıların kareleri

TextAlign = 2-fmTextAlignCenter

Başlık = “ ”

Otomatik Boyut = Yanlış

Mülk

Başlık = Temizle

Başlık = Çıkış

“Örnek 2” çalışma sayfasına yerleştireceğiz

Formu açmak için "Formu aç" butonu

“Örnek 2” ve bu formu başlatın (Şek.

Hadi geliştirelim

gelenek

arayüz

ve makyaj

senin için program

seri toplamları:

doğrulukla sayılar ε = 10P

k+2

S = ∑

(− 1)

k = 1

Aynı Excel çalışma kitabında kalalım,

örnek 1 ve 2'deki gibi. Aracın kullanılması

Pirinç. 5. İki basamaklı sayıların kareleri toplamı

“Yazı”, “Alan” ve “Düğme” bölümleri

sayıları 13'e bölünebilen sayıların oranları

alet yok

Elementler

yönetmek

“Örnek 3” çalışma sayfasına karşılık gelen nesneleri yerleştirelim (Şekil 6).

“Örnek 3” sayfa nesnelerinin özellikleri Tablo 3'te sunulmaktadır.

Tablo 3

Mülk

Mülk

Başlık = Seri toplamı

Başlık = Temizle

“Hesapla” ve “Temizle” butonlarına basma olaylarını işlemek için “Sayfa3 (Örnek 3)” modülüne aşağıdaki program kodunu girin:

eps = Val(InputBox("Hassaslığı ayarla", "Veri girişi"))

a = (-1)^(k + 2) / (f * 2^k) s = s + a

Döngü txtS.Text = s

Özel Alt clean_Click() txtS.Text = ""

Burada Do While – Loop döngüsünün gövdesi şöyle olacak:

yürütülebilir

terim

mutlak

k+2

n− 1

k+2

n+ 2

boyut (ör.

(− 1)

−∑

(− 1)

(− 1)

) irade

Pirinç. 6. Tutarı hesaplayın

k = 1

k = 1

belirtilen doğruluğu aşıyor 10 P

Programın çalışmasını kontrol edelim (Şekil 7).

Hadi geliştirelim

gelenek

Aşağıdaki problemi çözecek bir program yazalım.

Ekonomik faaliyetleri analiz ederken,

Kurulmuş

Sonraki

model: Ocak 2004'te bunun karı

girişim 573 bin ruble olarak gerçekleşti. ve sırasında

önümüzdeki 5 yıl içinde aylık %1 oranında artış gösterdi,

burada i ayın sayısıdır (yani Şubat ayında - Mart ayında% 2 oranında)

- kâr miktarına kıyasla %3 vb. oranında)

Pirinç. 7. Hesaplama sonucu

önceki ay.

Alınan ön bilgiyi belirleyin

seri toplamları

2004, 2005, ..., 2008 yıllarına ait kar tutarını ve bu 5 yılın toplam kar tutarını kabul ediyoruz.

Bu özel formu oluşturmak için VB düzenleyicisine gidelim (örnek 1-3'teki aynı MS Excel çalışma kitabında kalacağız) ve başka bir form ekleyelim (Şekil 8). İşletmenin kârının hesaplanan değerlerinin çıktısı, hem forma yerleştirilen liste nesnesi (ListBox) alanında hem de “Örnek 4” çalışma sayfasının hücrelerinde gerçekleştirilecektir (Şekil 9).

Pirinç. 8. “Kurumsal kâr” formu Şek. 9. Tablo örneğin 4

Form nesnelerinin özellikleri Tablo 4'te sunulmaktadır.

Tablo 4

Mülk

Mülk

Başlık = Kurumsal kâr

Başlık = Temizle

Başlık = Çıkış

Not. ColumnCount özelliği, ListBox nesnesinin sütun sayısını belirtir.

“Hesapla”, “Temizle” ve “Çıkış” düğmelerine basma olaylarını işlemek için

taşı" aşağıdaki kodu girin:

Özel Alt calc_Click() Dim i, j Tam Sayı Olarak

Dim PrM, prG, sPr Tekli Olarak

PrM = Val(InputBox("Ocak 2004'te elde edilen karı giriniz," "Veri girişi"))

ListBox, listeye öğe eklemek için AddItem yöntemini kullanır

ListName.AddItem İfadesi, Dizin

burada İfade eklenecek liste öğesidir; Dizin – listedeki bir öğenin seri numarası (liste öğelerinin numaralandırılması 0'dan başlar).

Ve ListBox nesnesinin List özelliği (RowNumber, ColumnNumber), belirtilen satır ve sütunun kesişiminde bulunan liste öğesini döndürür (atar).

“Örnek 4” çalışma sayfasında “Kurumsal Kar” formunu çağırmak ve bu formu başlatmak için “Formu Aç” butonunu yerleştireceğiz (Şekil 10).

Artık MS Excel çalışma kitabına "İçindekiler" adlı başka bir sayfa ekleyebilirsiniz; burada, örneğin Formlar araç çubuğundaki Düğme aracını kullanarak dört düğme oluşturacağız: "Karlılık Endeksi", "İki basamaklı sayılar" , “Seri Toplamı”, “Kar” işletmeleri."

VB editöründe, aşağıdaki kodu girdiğimiz yeni bir modül (Ekle → Modül) ekleyin:

Genel Alt SayfaExample1()

Çalışma Sayfaları("Örnek 1").Etkinleştir

ListPr.AddItem "Yıl", 0

‘İlk imzaları ve verileri ayarlama

ListPr.List(0, 1) = "Kar, bin ruble."

‘Yıl bazında döngü

‘her yılın ayları arasında geçiş yapın

Eğer (i = 4) ve (j = 1) ise O halde

PrM = PrM * (1 + j / 100)