Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

sythe for dhe while. sythe for, while dhe do while në C

bëj unazat while dhe foreach

bëj lak. . . derisa

bëj...while lak në C#, ky është versioni post-test i while. Kjo do të thotë që gjendja e lakut kontrollohet pasi të ekzekutohet trupi i lakut. Prandaj, do...while unazat janë të dobishme në situata ku një bllok deklaratash duhet të ekzekutohet të paktën një herë. Më poshtë është formë e përgjithshme operatori lak do-while:

do ( deklarata; ) while (kusht);

Me vetëm një operator mbajtëset hyrjet në këtë formë janë fakultative. Megjithatë, ato përdoren shpesh për ta bërë konstruktin do-while më të lexueshëm dhe për të mos u ngatërruar me konstruktin e ciklit while. Cikli do-while ekzekutohet për aq kohë sa shprehja e kushtëzuar është e vërtetë. Një shembull i përdorimit të një cikli do-while është programi i mëposhtëm që llogarit faktorialin e një numri:

Përdorimi i Sistemit; duke përdorur System.Collections.Generic; duke përdorur System.Linq; duke përdorur System.Text; namespace ConsoleApplication1 ( Programi i klasës ( static void Main (string args) ( provo ( // Llogarit faktorialin e një numri int i, rezultati = 1, num = 1; Console.WriteLine ("Fut një numër:"); i = int .Parse(Console .ReadLine()); Console.Write("\n\nFaktorial (0) = ", i); bëj (rezultati *= num; num++; ) ndërsa (num

për çdo lak

për çdo lak përdoret për të qarkulluar nëpër elementet e një koleksioni, i cili është një grup objektesh. C# përcakton disa lloje koleksionesh, secila prej të cilave është një grup. Më poshtë është forma e përgjithshme e operatorit për çdo lak:

foreach (shtypni emrin e variablës_loop në koleksion);

Këtu shkruani loop_variable_name qëndron për llojin dhe emrin variabël kontrolli një lak që merr vlerën e elementit tjetër të koleksionit në çdo hap të ciklit foreach. Dhe koleksioni nënkupton një koleksion të pyetur ciklikisht, i cili në vijim është një grup. Prandaj, lloji i variablit të ciklit duhet të përputhet me llojin e elementit të grupit. Përveç kësaj, lloji mund të shënohet fjalë kyçe var. Në këtë rast, përpiluesi përcakton llojin e variablit të ciklit bazuar në llojin e elementit të grupit. Kjo mund të jetë e dobishme për trajtimin e llojeve të caktuara të pyetjeve. Por, si rregull, lloji specifikohet në mënyrë eksplicite.

Deklarata e ciklit foreach funksionon si kjo. Kur fillon cikli, elementi i parë i grupit zgjidhet dhe i caktohet variablit të ciklit. Në çdo hap të mëpasshëm përsëritjeje, elementi tjetër një grup që ruhet në një variabël cikli. Cikli përfundon kur zgjidhen të gjithë elementët e grupit.

Cikli foreach ju lejon të kaloni nëpër çdo element të një koleksioni (një objekt që përfaqëson një listë të objekteve të tjera). Formalisht, që diçka të konsiderohet një koleksion, duhet të mbështesë ndërfaqen IEnumerable. Shembujt e koleksioneve përfshijnë grupet C#, klasat e koleksionit nga hapësira e emrave System.Collection dhe klasat e personalizuara të koleksionit.

Deklarata e ciklit për përgjithëson ndërtimin e njohur të ciklit të tipit të progresionit aritmetik. Sintaksa e tij është:

përoperatori (iniciatorët; kushti; lista_shprehëse).

Deklarata pas kllapave mbyllëse përcakton trupin e lakut. Në shumicën e rasteve, trupi i lakut është një bllok. Seti i iniciatorëve vlera fillestare një ose më shumë variabla, të quajtura shpesh numërues ose thjesht variabla të ciklit. Kushti vendos kushtin për fundin e ciklit, shprehja përkatëse, kur vlerësohet, duhet të marrë vlerën e vërtetë ose i rremë. Lista e shprehjeve, e ndarë me presje, tregon se si ndryshojnë numëruesit e ciklit në çdo hap të ekzekutimit. Nëse kushti i lakut është i vërtetë, atëherë ekzekutohet trupi i lakut, atëherë ndryshohen vlerat e numëruesve dhe gjendja kontrollohet përsëri. Sapo kushti bëhet i rremë, laku përfundon. Në një situatë normale, trupi i lakut ekzekutohet një numër të kufizuar herë. Numëruesit e lakut shpesh deklarohen drejtpërdrejt në iniciator dhe, në përputhje me rrethanat, janë variabla të lokalizuara në lak.

Në rastet kur është e mundur të ndërpritet laku para kohe duke përdorur një nga deklaratat e kërcimit, numëruesit deklarohen përpara lakut, gjë që ju lejon të analizoni vlerat e tyre kur dilni nga cikli.

Si shembull, merrni parasysh problemin klasik: është një varg teksti një palindrom. Për ta zgjidhur atë, cikli për përshtatet më së miri.

Këtu përdoren dy numërues - njëri në rritje, tjetri në ulje. Këtu është teksti i procedurës përkatëse:

/// < përmbledhje>
/// Përkufizimi i palindromeve. Demoja e ciklitpër
///
/// teksti
/// < kthehet> e vërtetë- nëse teksti është palindrom
bool publik Palindrome (rruga e vargut){
për (int i= 0, j= rr.Gjatesia- 1; i< j; i++, j--)
nëse (rr[i]!= str[j]) kthye (false);
kthimi (e vërtetë);
} // palindrom

5.6.2. ndërsa sythe

Cikli derisa(shprehje)është një lloj cikli universal i përfshirë në të gjitha gjuhët e programimit. Trupi i lakut ekzekutohet për sa kohë që shprehja mbetet e vërtetë derisa. Në gjuhën C#, ky lloj cikli ka dy modifikime - me një kontroll të gjendjes në fillim dhe në fund të ciklit. Modifikimi i parë ka sintaksën e mëposhtme:

ndërsa (shprehje) deklaratë

Ky modifikim korrespondon me një lak me një parakusht. Trupi i një laku të tillë nuk mund të ekzekutohet kurrë. Në një situatë normale, çdo ekzekutim i trupit të lakut është hapi tjetër drejt fundit të ciklit.

Një lak që kontrollon gjendjen e përfundimit në fund korrespondon me një lak me një kusht pas. Trupi i një lak të tillë ekzekutohet të paktën një herë. Këtu është sintaksa për këtë modifikim:

bëj
operatori
ndërsa (shprehje);

Le të japim një shembull në të cilin përfshihen të dy modifikimet e ciklit derisa. Në lakin e jashtëm kontrolli kryhet në fund dhe në lakin e brendshëm kontrollohet në fillim. Lakja e jashtme është një shembull tipik i një organizate kurrikula kur një detyrë e caktuar zgjidhet në mënyrë të përsëritur në një dialog me përdoruesin. Në çdo hap, përdoruesi fut të dhëna të reja, zgjidh problemin dhe analizon të dhënat e marra. Është në kompetencën e tij të vazhdojë apo jo llogaritë, por të paktën një herë duhet ta zgjidhë problemin. lak i brendshëm bëjderisa përdoret për zgjidhjen e problemit të njohur me palindromet. Këtu është teksti i procedurës përkatëse:

/// < përmbledhje>
/// Dy cikle: me një kontroll në fund dhe në fillim.
/// Cikli i jashtëm është një shembull i një problemi që mund të zgjidhet shumë herë.
/// Fundi i ciklit përcaktohet në dialogun me përdoruesin.
///
Publik void Loop (){
// Filloniproceduratpërgjigje vargu, tekst;
bëj{
// fillimi i lakut të jashtëm
Konsolë. Shkruani Linjë("Fut një fjalë");
teksti= Console.ReadLine();
int i= 0, j= teksti.Gjatësia- 1;
nderkohe une< j)&& (teksti[i]== tekst[j])) (
// brendshmeciklit
i++; j-- ;
}
nëse (teksti[i]== tekst[j]) Konsola.WriteLine(tekst+ " - kjopalindrom!");
other Console.WriteLine(tekst+ " - kjojopalindrom!");
Console.WriteLine("Le te vazhdojme? (po/jo)");
përgjigje= Console.ReadLine();
} ndërsa (përgjigje== "po");// funde jashtmeciklit
} // lak

5.6.3. për çdo lak

Një lloj i ri cikli që nuk është trashëguar nga C++ është cikli per secilin, i dobishëm kur punoni me grupe, koleksione dhe kontejnerë të tjerë të ngjashëm të të dhënave. Sintaksa e tij është:

per secilin(identifikuesi i llojitkontejner) operator

Cikli funksionon saktësisht siç nënkupton emri i tij - trupi i lakut ekzekutohet për çdo element në kontejner. Lloji i identifikuesit duhet të përputhet me llojin e elementeve të ruajtura në kontejnerin e të dhënave. Supozohet gjithashtu se elementet e kontejnerit (vargu, koleksioni) janë të renditura. Në çdo hap të ciklit, identifikuesi që specifikon elementin aktual të kontejnerit merr vlerën e elementit tjetër në përputhje me rendin e vendosur në elementet e kontejnerit. Me këtë element aktual, trupi i ciklit ekzekutohet - ekzekutohet aq herë sa ka elementë në kontejner. Laku përfundon kur të gjithë elementët e kontejnerit janë përsëritur plotësisht. Mungesa serioze e cikleve per secilin në gjuhën C# është se cikli funksionon vetëm për lexim, por jo për të shkruar elementë. Kështu që ju duhet të mbushni kontejnerin me elementë duke përdorur deklarata të tjera të ciklit.

Shembulli i mëposhtëm tregon se si të punoni me një grup 3D. Vargu krijohet duke përdorur sythe si për, dhe me rastin e gjetjes së shumës së elementeve të tij, minimumi dhe vlera maksimale përdoret lak per secilin:

/// < përmbledhje>
/// Demonstrimi i ciklitper secilin.
/// Llogaritni shumën, maksimumin dhe elementet minimale
/// Vargu 3D i mbushur me numra të rastit.
///
bosh publik SumMinMax(){
int[,] arr3d= int e re;
rnd rastit= new Random();
për (int i= 0; i< 10; i++)
për (int j= 0; j< 10; j++)
për (int k= 0; k< 10; k++)
arr3d= rnd.Next(100);
shuma e gjatë= 0;
int min= arr3d,maksimumi= arr3d;
foreach (artiku int në arr3d){
shuma+= artikull;
nëse (artikull> max) max= artikull;
ndryshe nëse (arti< min) min= artikull;
}
Console.WriteLine("shuma= {0}, min= {1}, maksimumi= {2}", shuma, min, maksimumi);
} // ShumaMinMax

për sythe dhe ndërsa

C# ka katër lloj te ndryshme sythe (for, while, do...while dhe foreach) që ju lejojnë të ekzekutoni një bllok kodi në mënyrë të përsëritur derisa të plotësohet një kusht i caktuar. Në këtë artikull, ne do të njihemi me sythe for dhe while.

për lak

Cikli for në C# siguron një mekanizëm përsëritjeje në të cilin kontrollohet një kusht i caktuar përpara se të ekzekutohet çdo përsëritje. Sintaksa për këtë operator është paraqitur më poshtë:

për (iniciator; kusht; përsëritës) deklarata(t)

iniciator

është një shprehje që vlerësohet përpara ekzekutimit të parë të trupit të ciklit (zakonisht inicializimi i një ndryshoreje lokale si numërues i ciklit). Inicializimi zakonisht përfaqësohet nga një operator caktimi që specifikon vlera fillestare një variabël që vepron si numërues dhe kontrollon ciklin;

gjendje

kjo është një shprehje që kontrollohet përpara çdo përsëritjeje të re të ciklit (duhet të kthehet true që të ekzekutohet përsëritja tjetër);

përsëritës

shprehja që do të vlerësohet pas çdo përsëritjeje (zakonisht duke rritur vlerën e numëruesit të lakut).

Vini re se këto tre pjesë kryesore të deklaratës së ciklit for duhet të ndahen me një pikëpresje. Cikli for do të vazhdojë të funksionojë për sa kohë që testi i gjendjes vlerësohet si i vërtetë. Sapo ky test të dështojë, cikli do të përfundojë dhe programi do të vazhdojë nga deklarata pas ciklit for.

Vlen të përmendet se një cikli for është i shkëlqyeshëm për të përsëritur një deklaratë ose bllok deklaratash një numër të njohur herë. le të shqyrtojmë përdorim praktik për ciklin në shembullin e mëposhtëm:

Përdorimi i Sistemit; duke përdorur System.Collections.Generic; duke përdorur System.Linq; duke përdorur System.Text; Hapësira e emrave ConsoleApplication1 ( Programi i klasës ( // Kjo metodë printon tabelën e shumëzimit // të madhësisë bxb static void tab(byte b) ( Console.WriteLine("Tabela e shumëzimit (0) x (0)\n", b); // Ky lak kalon nëpër linjat për (int i = 1; i

ndërsa lak

si për, derisaështë gjithashtu një cikël me kontroll paraprak. Sintaksa e saj është e ngjashme, por ndërsa sythe përfshijnë vetëm një deklaratë:

ndërsa(kushti) deklarata(t);

ku operatoriështë një deklaratë e vetme ose një bllok deklaratash, dhe gjendje nënkupton një kusht specifik kontrolli të ciklit dhe mund të jetë çdo shprehje boolean. Në këtë cikli, deklarata ekzekutohet për sa kohë që kushti është i vërtetë. Sapo kushti të bëhet fals, kontrolli i programit transferohet në linjën e kodit menjëherë pas ciklit.

Ashtu si cikli for, cikli while teston shprehjen e kushtëzuar të specifikuar në fillim të ciklit. Kjo do të thotë që kodi në trupin e ciklit mund të mos ekzekutohet fare, dhe gjithashtu eliminon nevojën për të kryer një kontroll të veçantë përpara vetë ciklit.

Sythet përdoren për të përsëritur disa herë pjesët e kodit. Aftësia për të përsëritur disa fragmente të kodit është një nga detyrat kryesore dhe në të njëjtën kohë të rëndësishme që një programues duhet të zgjidhë. Shumica e programeve ose faqeve përdorin sythe, për shembull, për të shfaqur informacione ose njoftime për lajmet. Kjo do të thotë, në detyra të tilla është e nevojshme që vazhdimisht të kryhen operacione leximi dhe shkrimi, dhe për të mos kopjuar të njëjtin kod, ciklet vijnë në shpëtim. Sythet janë mjaft të lehta për t'u deklaruar në kod, por ato funksionojnë detyra sfiduese, vetëm një përsëritje e thjeshtë.

Për të filluar me unazat, sigurohuni që të keni një kuptim të mirë të konceptit në gjuhën e programimit C. Sepse do të jetë jetike në përdorimin e cikleve, sepse si në cikle ashtu edhe në ka shprehjet e kushtëzuara. Ekzistojnë tre lloje sythesh në C: për , while , do while . Secila prej tyre ka përdorimet e veta specifike. Të gjitha ato janë përshkruar më poshtë.

Cikli më i përdorur është cikli for, struktura e tij tregohet më poshtë:

Për (/* inicializimi i ndryshores; kushti; ndryshimi i vlerës së një ndryshoreje */) ( // trupi i ciklit (këtu është kodi që do të përsëritet) )

Inicializimi i ndryshores ju lejon ose të deklaroni një variabël dhe t'i caktoni një vlerë asaj, ose t'i caktoni një vlerë një ndryshoreje tashmë ekzistuese. Së dyti, vlera e kësaj variabli i tregon programit nëse kushti i ciklit është i vërtetë ose i gabuar. Dhe për sa kohë që kushti i lakut është i vërtetë, cikli duhet të vazhdojë të përsëritet. Variabla e kontrollit duhet të ndryshohet disi, përndryshe cikli do të jetë i pafund, për shembull, mund ta përditësoni kështu: i++ , i = i + 2 ose edhe si ky i = i rastësishëm(5) . Vini re se çdo seksion në kokën e lakut është i ndarë me një pikëpresje, e cila është shumë e rëndësishme. Vini re gjithashtu se secila prej seksioneve mund të jetë bosh, megjithëse pikëpresjat duhet të jenë ende atje. Nëse kushti nuk është bosh, atëherë ai vlerësohet në true dhe cikli do të vazhdojë derisa diçka ta bëjë kushtin e ciklit false. Le të shohim një shembull të thjeshtë të përdorimit të një cikli for.

#përfshi int main() ( int i; /* Cikli do të funksionojë deri në i< 10, при этом после каждой итерации переменная i будет инкрементироваться(увеличиваться на 1)*/ for (i = 0; i < 10; i++) { /* Имейте ввиду что условие проверяется перед каждым повторением, то есть работа цикла остановится когда переменная i будет равна 10*/ printf("%d\n", i); } getchar(); }

Në fakt, rezultati i programit:

0 1 2 3 4 5 6 7 8 9

Ky program është një shembull shumë i thjeshtë i përdorimit të një cikli. variablës i i caktohet zero, dhe ndërsa i është më pak se 10, vlera e variablës i shtypet në ekran, pas kësaj, ndryshores i i shtohet një dhe gjithçka përsëritet përsëri derisa kushti të bëhet false. Mbani në mend se vlera e ndryshores i rritet pasi ekzekutimi i kodit në trupin e ciklit të ekzekutohet për herë të parë.

Cikli while është një lak shumë i thjeshtë, këtu është struktura e tij:

Ndërsa (/*kushti*/) ( // trupi i ciklit - këtu është kodi që duhet të përsëritet )

Trupi i lakut fillon të ekzekutohet nëse kushti i lakut është i vërtetë. Kushti është një shprehje boolean, si p.sh. x == 1 ose x! = 7 (x nuk është e barabartë me 7). Kjo do të thotë, gjendja mund të jetë absolutisht çdo gjë - çdo kombinim shprehjet boolean. Këtu është një shembull i një kushti të përbërë - x == 3 || x > 10, ky kusht do të jetë i vërtetë nëse x është i barabartë me 3 ose x është më i madh se 10. Vini re se ndërsa ka një seksion inicializimi ose një seksion ndryshimi të ndryshores së kontrolluar, kështu që përpara se të përdorni këtë lak, së pari duhet të deklaroni variablin që do të testohet në ciklin e gjendjes dhe të ndryshohet vlera e kësaj variabli në trupin e ciklit. Në fakt, le të shohim një shembull të thjeshtë duke përdorur një lak while:

#përfshi int main() ( int var = 0; /* sigurohuni që së pari të deklaroni variablin */ ndërsa (var< 10) { /* пока значение переменной var меньше 10 */ printf("%d\n", var); var++; /* обновляем значение в переменной var(если этого не делать, то условие цикла всегда будет истинным, тогда цикл будет - бесконечным) */ } getchar(); }

Pra, ne shikuam një shembull tjetër të përdorimit të cikleve, dhe siç mund ta shihni, nuk ka asgjë të komplikuar as në këtë shembull. Vetëm imagjinoni që cikli fillon gjithmonë të përsërisë kodin që është në trupin e ciklit. Sapo të ekzekutohet deklarata e fundit në trupin e lakut, kontrollohet gjendja e lakut. Nëse kushti është ende i vërtetë, atëherë cikli vazhdon të funksionojë, dhe nëse kushti është false, atëherë cikli del.

Ekziston një lloj tjetër loop - do while . Ky lak është i dobishëm kur ju duhet të ekzekutoni kodin të paktën- 1 herë. Konsideroni strukturën e tij:

Do ( // loop body ) while (/*condition*/);

Struktura është shumë e thjeshtë, siç mund ta shihni, gjendja është në fund të ciklit dhe gjendja do të kontrollohet pasi të ekzekutohet kodi në trupin e lakut. Vini re se kushti testohet në fund të ciklit, jo në fillim, kështu që blloku i kodit në trupin e ciklit do të ekzekutohet të paktën një herë. Nëse kushti është i vërtetë, cikli kthehet në fillim dhe e ekzekuton përsëri. Një cikli do while është pothuajse saktësisht i njëjtë me një cikli while, me përjashtim të faktit që trupi i ciklit është i garantuar të ekzekutohet të paktën një herë. Cikli while fillimisht kontrollon gjendjen dhe më pas ekzekuton bllokun e kodit në trup, natyrisht, nëse kushti është i vërtetë, ndërsa cikli do while fillimisht ekzekuton kodin në trupin e ciklit, dhe më pas kontrollon gjendjen, dhe nëse është e vërtetë, atëherë ajo vazhdon të funksionojë. Një shembull i një cikli do while është paraqitur më poshtë:

#përfshi int main() ( int i = 0; do ( /* Printoni një mesazh dhe dilni */ printf("Përshëndetje! Po bëj ndërsa\n"); ) while (i != 0); getchar(); )

Vini re pikëpresje në fund të lakut, duhet ta përdorni gjithmonë këtë pikëpresje si në shembullin e mësipërm. Shumë shpesh kjo pikëpresje hiqet, duke rezultuar në një gabim përpilimi. Vetëm ky cikël përfundon me pikëpresje, pjesa tjetër e cikleve në fund, përveç kllapave mbyllëse, mos vendosni asgjë. Vini re se në shembullin e mësipërm, ky cikli do të ekzekutohet një herë sepse mesazhi printohet fillimisht dhe më pas kontrollohet gjendja e ciklit.

Gigabyte do të ofrojë paketa të tabelës Z390 Aorus Xtreme WaterForce dhe një Core i9-9900K të mbingarkuar. Gigabyte së shpejti do të sjellë në treg komplete nga motherboard Z390 Aorus Xtreme WaterForce dhe i mbingarkuar në 5.1 CPU GHz Intel Core i9-9900K (8 bërthama / 16 fije, 3.6 / 5 GHz). Këto grupe janë kryesisht

samsung galaktika A90 u testua për herë të parë në standardin Geekbench. 10 prill Samsung do të mbajë prezantimin e radhës, ku me siguri do të prezantojë një sërë telefonash inteligjentë të rangut të mesëm. Midis tyre duhet të jetë Samsung Galaxy A90, i cili fjalë për fjalë sapo është testuar

Në Slahsleaks, i cili shpesh poston foto ekskluzive të reja pajisje celulare dhe aksesorë për to, të publikuara foto live Paneli perballe Smartphone Nokia 8.1 plus. Smartphone mori korniza shumë të ngushta rreth perimetrit, një kornizë pak më e gjerë nën ekran,

Një ekip ndërkombëtar shkencëtarësh ka demonstruar rruge e re shndërrimi i dritës së emetuar nga një lazer konvencional në të ashtuquajturën dritë kuantike. Një tipar i një drite të tillë janë vetitë kuantike identike të fotoneve të saj, të cilat janë nxjerrë në pah nga

Shumica pajisje moderne duke u nisur nga më e thjeshta orë elektronike, përdoren komponentë të veçantë, të quajtur gjeneratorë të orës, të cilët kur u vendoset një sinjal i përshtatshëm, fillojnë të prodhojnë lëkundje me një frekuencë të specifikuar rreptësisht. Më shumë

Astronomët kanë zbuluar 83 vrima të reja të zeza supermasive që janë pothuajse aq të vjetra sa pjesa e universit që mund të studiohet. Identifikimi i këtyre vrimave të zeza dhe përcaktimi i parametrave të tyre u krye duke analizuar shkëlqimin dhe spektrin e emetimit të tyre. Ata janë

Google njoftoi veçori e re për të dërguar email në Gmail. Tani ato mund të planifikohen të dërgohen kohë e përshtatshme. Për të planifikuar një letër, duhet të klikoni në shigjetën pranë butonit "Dërgo" dhe të zgjidhni Koha e duhur dhe datën e dërgimit, shkruan Chronicle.info duke iu referuar

Specialistët iFixit studiuan dizajnin e tabletit Kompjuter iPad mini e re brezi, i cili Kompania Apple lançuar zyrtarisht muajin e kaluar. Pajisja, kujtojmë, është e pajisur Ekrani i retinës ka një diagonale prej 7.9 inç. Rezolucioni është 2048 × 1536 pika,

Televizorët dhe ekranet Vizio do të kenë mbështetje për AirPlay. Prodhuesi amerikan elektronikë të konsumit Vizio njoftoi më parë mbështetje për AirPlay 2 dhe aplikacionin Home. Tani është bërë e ditur se specialistët e kompanisë po punojnë në një aplikacion SmartCast të pajtueshëm me AirPlay.

BIOSTAR, prodhuesi kryesor në botë i pllakave amë, kartave grafike dhe pajisjeve ruajtëse, ka zbuluar motherboard A68MHE për përdoruesin masiv. BIOSTAR A68MHE është i pajisur me Çipset AMD A68H që mbështet procesorët Seria AMD FM2+ Athlon™/A- dhe RAM

Artikujt kryesorë të lidhur