For циклінің операторы циклдық операциялар саны алдын-ала белгілі болған жағдайда қолданылады.
for операторын жазу пішімі:
for(өрнек1;өрнек2;өрнек3)
{ операторлар;},
мұнда;
өрнек1 – циклдің басқарушы айнымалысының бастапқы мәнін анықтайды;
өрнек2 – циклдің басқарушы айнымалысының ақырғы мәнін анықтайды;
өрнек3 – циклдің басқарушы айнымалысының өзгеріс қадамын анықтайды.
Мысалы: for (i = 0; i <= 10; i++) {цикл операторлары}
3.3 суретінде for цикліның графикалық көрінісі келтірілген.
а чальное
значение
у правляющей
п еременной.
П
Цикл операторлары
роверка
к онечного нет
значения
управляющей
переменной. да ераторы
цикла. 3.3 суреті – For операторының графикалық көрінісі.
for циклін жазудың басқа мысалдарын қарастырайық:
1) for (int i = 0; i <= 10; i++) {цикл операторлары}
Бұл мысалда for цикліның операторы жазылған, онда цикл ішінде бүтін типті басқарушы айнымалы жарияланады және ол 0-ден 10-ға (қоса санағанда) дейін 1 қадамымен өзгереді.
2) for ( i = 10; i >= 0; i--) {цикл операторлары }
Бұл мысалда i - бұрынырақ жарияланған айнымалы басқарушы айнымалы ретінде қолданылады, ол 0-ден 10-ға (қоса санағанда) дейін минус 1 қадамымен өзгереді.
3) for ( x = 0; x <= 1; x = x + 0.1) {цикл операторлары}
Бұл мысалда басқарушы айнымалы ретінде x - нақты типтегі айнымалы қолданылады, ол 0-ден 1-ге дейін 0.1 қадамымен өзгереді.
3.2-есеп. минус 50-ден 50-ге дейінгі ауқымда 10 кездейсоқ бүтін сандарды басып шығару.
Есеп шешімінің алгоритмін құру жұмысын оның құрылымдық схемасымен аяқтау міндетті емес. Алгоритм жазбаша түрде, яғни есептің шешу қадамдарын толық сипаттау түрінде көрсетілуі мүмкін.
Алдымен max және min айнымалыларын жариялау керек. Оларға сәйкесінше 10 кездейсоқ сандардың ішінен ең үлкенін және ең кішісін жазамыз.
Кездейсоқ сандардың ауқымын біз білеміз, сондықтан max айнымалысына сандар ауқымынан кіші немесе оның ең кіші мәніне тең санды меншіктеу керек, мысалы минус 100, ал min айнымалысына сандар ауқымынан үлкен немесе оның ең үлкен мәніне тең санды меншіктеу керек.
Әлбетте, max және min айнымалыларына бірінші рет құрылған кездейсоқ санды меншіктеу дұрыс болады, бірақ есептің шарты бойынша олардың 10-ын құру керек, оны циклде орындаған абзал және бізге кейбір мәндерді циклге дейін меншіктеу керек. Егер меншіктеу операциясын қолданбаса, онда айнымалыларға нөл мәндері меншіктеледі, бірақ 0 саны сандар аралығының бір бөлігі, сондықтан нөлдік мәндер бағдарлама жұмысының нәтижесін бұзуы мүмкін (барлық құрылған 10 сан 0-ден үлкен немесе кіші).
Сонымен, 10 кездейсоқ санды құру керек., сондықтан for циклінің қадамы бірге тең, 1-ден 100-ге дейінгі аралығындағы, бүтін типті басқарушы айнымалымен бірге қолдану орынды.
Цикл денесінде кездейсоқ сандарды құруды, ал берілген аралықта оны шығаруды және осы санды бір-бірден max және min мәндерімен салыстыруды орындау керек. Егер a саны max үлкен болса, онда max-ге a санын жазу керек.
Егер a саны min кіші болса, онда min-ге a санын жазу керек ( бірінші құрылған кездейсоқ сан max-нан үлкен және min-нен кіші болады).
10 циклдік операция аяқталғаннан кейін max және min айнымалыларының мәндерін басып шығару керек.
Бағдарламаның бастапқы коды:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int i, j, k, a, max, min;
max = -100; min = 100; j = 0; k = 0;
Random rnd = new Random();
for(i=1;i<=10;i++)
{
a=rnd.Next() % 101 - 50;
Console.Write(" {0}",a.ToString());
if (a>max) {max = a; j = i;}
if (a
}
Console.WriteLine();
Console.WriteLine("max={0} Nomer={1}",max,j);
Console.WriteLine("min={0} Nomer ={1}",min,k);
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
-33 -26 -10 -16 -44 40 -50 -35 -45 -38
max=40 Nomer=6
min=-50 Nomer=7
Enter pernesin basiniz
Құрылған алгоритмге біз тағы екі қосымша j және k айнымалыларын қостық, оларға құрылған сандар тізбектілігі бойынша ең үлкен және ең кіші сандарды сәйкес меншіктедік.
Кейбір бағдарламалау тілдерінде басқарушы айнымалының мәнін цикл денесінде өзгертуге үзілді-кесілді рұқсат берілмеген. C# тілінде оған рұқсат берілмеген. Мысалы, баңдарлама үзіндісі:
for(i=0;i<=10;i++)
{
Console.Write(" {0}",i.ToString());
if (i == 3) i = 6;
}
Console.WriteLine();
шығарады
0 1 2 3 7 8 9 10
for цикл операторының жазбасында басқарушы айнымалыны жариялауға болады. Мысалы:
for (int j=1;j<=10;j++) { операторлар; }
for циклінің ішінде j айнымалысын жариялағаннан кейін біз автоматты түрде осы айнымалының «өмірлік уақытын» анықтаймыз, ол уақыт циклдің жұмыс істеу уақытына тең. Яғни for циклі жұмысқа қосылғаннан кейін компьютердің жадынан j басқарушы айнымалының мәніне орын бөлінеді, ал цикл аяқталғаннан кейін жадының ол орны босатылады, яғни бос деп белгіленеді. Жергілікті айнымалыны жариялаудың осы әдісі бағдарламаны құруда қолданылады, оған қойылатын талаптардың бірі - компьютердің жадынан ең аз көлемді алуы керек.
for циклінің операторы бірнеше басқарушы айнымалыларын қолдануға мүмкіндік береді, мысалы:
for ( i=1, j=10; i
for циклін шартты циклге айналдыруға болады, мысалы:
for ( i=0; (char) Console.Read() != ‘n’; i++)
for циклінің осы жазбасы цикл жұмысының аяқталуын басқарушы айнымалымен байланыстырмай ‘n’ символын енгізумен байланстырады.
C# тілінде for циклінің ерекше жазу пішімі болуы мүмкін, мысалы,
for (i=0; i<=10) { . . . ; i++} – басқарушы айнымалының өзгеру қадамы цикл тақырыбынан денесіне көшірілді;
for (; ;) – шексіз цикл және т.б.
Қарастырылатын оқу бағдарламаларына қойылатын негізгі талап - бағдарлама жұмысы бойынша алгоритмнің көрнектілігі, ол алгоритмнің көлеміне қойылатын талапқа сәйкес бола бермейді, сондықтан for циклінің барлық ерекше жазу пішімдерін біз қарастырмаймыз.
Егер кейбір шарттарға байланысты цикл тақырыбындағы шарттардың орындалуына дейін циклдің орындалуын үзу (тоқтану) керек болса, онда break операторы қолданылады. Мысалы, for циклінің денесінде циклдің орындалу «шексіздігін» тоқтату мен бақылау керек болған жағдайларда break операторын пайдалануға болады.
C# тілінде break операторынан басқа цикл денесінің орындалуын басқаратын тағы екі оператор қарастырылған – continue және return.
continue операторы цикл денесінің соңына дейінгі барлық басқа қалған операторларды орындамай, өткізіп жібереді және циклдің келесі итерациясын іске қосады.
return - қайтару операторы күрделі оператордың немесе функцияның орындалуын аяқтайды және бағдарлама басқаруын функцияны шақыру нүктесінде немесе return операторын шақырған күрделі оператордан кейінгі келесі операторға табыстайды. Return операторы мына пішімде болады:
return [өрнек];,
мұндағы өрнектің және return функциясын шақырған оператордың типі бірдей болуы тиіс.
Егер return операторы C# тілінің күрделі операторын немесе void типті функциясын шақырса, онда өрнек болмау керек.
C# тілінде массивтер, коллекциялар деректерімен және деректер жиынын біріктіру формаларымен жұмыс істеуге арналған арнайы (foreach) циклі бар. Осы циклдің жұмысы мен жазылу пішімі массивтер тақырыбында қарастырылатын болады.
Достарыңызбен бөлісу: |