Qëllimi i punës:
Studioni operatorët ciklikë për, while, do - while, mësoni se si të hartoni dhe programoni algoritme ciklike.
Informacion i shkurtër teorik
Operatorët e lakut përdoren kur është e nevojshme të përsëriten disa herë disa veprime (operatorë dhe operacione), dhe seksione të tilla të algoritmeve quhen unaza.
Operatori i ciklit for
Forma bazë e deklaratës së ciklit for është:
për (shprehje_1; shprehje_2; shprehje_3)
operator;
Ku shprehje_1– vlera fillestare e parametrit të ciklit;
shprehje_2– kontrollimin e kushteve për vazhdimin e ciklit;
shprehje_3– ndryshimi i parametrit të ciklit (korrigjim);
operatori– operator i thjeshtë ose i përbërë në gjuhën C.
Skema e funksionimit të operatorit është si më poshtë: vetëm një herë, së pari llogaritet shprehja_1, më pas kontrollohet shprehja_2, dhe nëse është "e vërtetë", atëherë ekzekutohet një seksion ciklik i programit, atëherë korrigjohet parametri, etj. derisa shprehja_2 të marrë vlerën “false”.
Për shembull: për (k=1; k<5; k++)
printf(“\n %d”, k);
Si rezultat i ekzekutimit të këtij operatori, numrat nga 1 në 4 shtypen në një kolonë.
Ju mund të përdorni një variabël të çdo lloji bazë si një parametër cikli.
Për shembull:
për (ch='a'; kap<=’z’; ch++) // Вывод на экран букв
printf(“ %c”,ch); // Alfabeti latin
Është e nevojshme të kontrolloni me kujdes strukturën e sytheve for në program në mënyrë që të mos përfundoni me një lak të pafund (nga i cili nuk ka dalje).
Për shembull:
për(k=10; k>6;k++)
printf (“lak i pafund\n”);
Cikli i daljes përpara afatit në mënyrat e mëposhtme:
Me kusht shtesë;
Duke përdorur operatorët e mëposhtëm:
pushim;- dalja nga cikli në të cilin ndodhet ndërprerja, kontrolli transferohet në deklaratën e parë të ekzekutuar pas ciklit;
dalje (int Kod);- dilni nga programi;
kthimi;- dalje nga funksioni;
Përdorimi i operatorit të kërcimit të pakushtëzuar shkoj<метка>;
Herët përfundimi i hapit aktual ciklik e mundur duke përdorur një kusht ose operator shtesë vazhdojnë, e cila ndërpret ekzekutimin e hapit të ciklit aktual, d.m.th. anashkalon deklaratat e pjesës tjetër të ciklit dhe transferon kontrollin në deklaratën kryesore të ciklit për të rregulluar parametrin dhe për të kontrolluar gjendjen.
Ndalohet transferimi i kontrollit nga jashtë në brendësi të lakut.
Mund të mungojë ndonjë nga shprehjet e ciklit for në kllapa, por simboli ";". nuk mund të ulet.
Për shembull:
për (; i<3; i++)
vendos ("Përshëndetje!");
Deklaratat ciklike while dhe do–while
Forma bazë e operatorit ciklik derisa:
Ndërsa (kushti)
operator;
Ku operatori
Cikli funksionon për aq kohë sa kushti vlerësohet si i vërtetë, d.m.th. shprehja në kllapa jep një rezultat jozero. Ky është një lak me një parakusht - së pari kontrollohet kushti, pastaj ekzekutohet deklarata. Prandaj, cikli while nuk do të ekzekutohet as një herë nëse rezultati fillestar i llogaritjes së kushtit është 0.
Forma bazë e operatorit bej Nderkohe:
operator;
ndërsa(kusht);
Ku operatoriështë një pohim i thjeshtë, i përbërë ose bosh.
Operatori bëj–derisa– operator i ciklit me kusht postar, d.m.th. fillimisht ekzekutohet deklarata dhe më pas gjendja kontrollohet për vërtetësi. Meqenëse në një cikli do–while gjendja kontrollohet në fund të ciklit, cikli do të ekzekutohet të paktën një herë.
Në unazat si while dhe do–while, të njëjtat metoda të daljes së hershme nga cikli dhe përfundimit të hershëm të hapit aktual të ciklit lejohen si në deklaratën for, por në rastin e fundit, ndryshe nga cikli for, kontrolli transferohet. për të kontrolluar gjendjen. Për të parandaluar një lak të pafund brenda sytheve while dhe do–while, duhet të parashikoni ndryshimin e variablave të përfshirë në kusht.
Për shembull:
për (i=1;i<=300;i++) // Печать целых чисел, кратных 5
nëse (i%5!=0) vazhdon;
printf(“%5d”,i);
Shembuj të sytheve të pafundme:
operator;
2) while(number_not_0) // Gjithmonë e vërtetë!
operator;
operator;
ndërsa (numri_jo_0); // Gjithmonë e vërtetë!
Midis operatorëve të ciklit duhet të ketë një kusht daljeje.
Unazat e mbivendosura
Në rastin e sytheve të mbivendosur, një lak është brenda një tjetri, për shembull:
për(i=nn;i për(j=mn;j operator; Ku operatoriështë një pohim i thjeshtë, i përbërë ose bosh. Cikli i brendshëm do të ekzekutohet për çdo vlerë të parametrit i që plotëson gjendjen e ciklit të jashtëm. Shembull: për(i=1;i<10;i++) // Печать таблицы умножения për(j=1;j<4;j++) printf(“\n %d*%d=%2d”, i, j, i*j); printf (“\n”); Një shembull i përdorimit të deklaratës for Llogaritni. Programi duhet të printojë rezultatet e ndërmjetme dhe përfundimtare. Teksti i programit mund të duket si #përfshi #përfshi vendos ("Fut N"); scanf(“%d”,&N); për (s=0, k=1; k<=N; k++) // В заголовке цикла можно выпол- ( // marr dhe cakton dyfish printf(" \n k=%d s=%f ", k, s); printf("\n PËRGJIGJE: s=%f, Shtypni çdo tast...",s); Opsione për detyra individuale Shkruani një program për të përcaktuar një tabelë të vlerave të funksionit në në një gamë arbitrare [ a,b] ndryshon argumenti X me hapa arbitrare h. vlerat a, b, h futur nga tastiera. Tabela duhet të përmbajë kolonat e mëposhtme: numrin e sekuencës, vlerën e argumentit x, vlera e funksionit, mesazhi për rritjen ose zvogëlimin e funksionit, ndryshimin e dy vlerave të funksionit fqinj. Përcaktoni vlerat maksimale dhe minimale të funksionit. 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. Quhet një proces në të cilin një deklaratë ose grup deklaratash ekzekutohet në mënyrë të përsëritur për vlera të ndryshme argumentesh procesi ciklik. VBA përdor deklarata looping për të kryer veprime të përsëritura, të cilat janë të llojeve të mëposhtme: operatori lak me parametër For – Tjetra, ndërtimi i së cilës përdoret nëse paraprakisht dihet se sa herë duhet të përsëritet trupi i lakut: Për numërues = fillestar_vlera Pastaj final_vlera Hapi hap block_of_operators Tjetra me banak operatorët lak me parakusht ose paskushte, të cilat përdoren për të organizuar një lak me një numër të panjohur përsëritjesh të trupit të lakut: Dizajni i lakut Dizajni i lakut me një parakusht duket si: me një kusht postar ka formën: Kushti Do Ndërsa deklaratë_blloku deklaratë_blloku Kushti Loop while Bëni deri në kusht deklaratë_blloku deklaratë_blloku Loop Deri në gjendje Ndërsa kushti deklaratë_blloku Ne do të zhvillojmë një formë të personalizuar dhe do të krijojmë një program për të përcaktuar indeksin e përfitimit të projektit të investimit të propozuar për rinovimin e pajisjeve, nëse shuma e investimit fillestar (IP) është 10,000 mijë rubla, norma e skontimit është r = 10%, dhe e pritshme flukset monetare janë si më poshtë: Rrjedha e parasë (DPk B), B mijë rubla Lëreni formën e përdoruesit të duket si (Fig. 1) dhe vlerat e flukseve monetare në vitet 1-5 lexohen nga qelizat e fletës së punës "Shembulli 1" (Fig. 2). Vetitë e objekteve të formës janë paraqitur në tabelën 1. Oriz. 1. Formulari "Indeksi i Rentabilitetit" rentabiliteti projekt investimi" llogaritur me formulë ∑n DPk IR = k = 1 (1+ r) ku n është numri i viteve gjatë të cilave do të mbërrijnë arkëtimet në para. Oriz. 2. Tabela e shpërndarjes së fluksit të parasë Tabela 1 Prona Prona Titulli = qiraja e indeksit- Titulli = Madhësia origjinale bardhësia e investimit investimet e reja projekti Titulli = Norma e skontimit Titulli = Indeksi i Rentabilitetit Titulli = Pastro Titulli = Dalje Për të përpunuar ngjarjen e klikimit të butonit "Llogarit", shkruani sa vijon Nën private calc_Click() 'cakto llojin e ndryshores Dim pv, dp, i, n Si numër i plotë Dim r, s Si Beqar 'leximi i vlerave të variablave pv = Val(txtPV.Tekst) r = Val(txtSD.Text) / 100 n = Val(InputBox("Fut numrin e viteve për të cilat ejani monetare faturat", "Hyrja e të dhënave")) 'leximi i vlerave të rrjedhës së parasë dp = Qeliza (2, i + 2) 'përmbledhje txtIR.Text = Rrumbullakët(s / pv, 2) 'rrumbullakimi dhe nxjerrja e rezultatit Funksioni Round(N, k) rrumbullakos numrin N në k shifra dhjetore. Më pas duke përdorur elementin Toolbar Button Kontrollet Le të vendosim butonin “Open Form” poshtë tabelës për të nisur procedurën “Profitability Index Form” (Fig. 3). Kodi për këtë procedurë duket si ky: Nën-Form Private Indeksi i Rentabilitetit_Click() Oriz. 3. Përcaktimi i indeksit të përfitimit të një projekti investimi Duke përdorur butonin e krijuar "Formulari i hapur", ne hapim formularin dhe llogarisim indeksin e përfitimit të projektit të investimit (Fig. 3). Le të zhvillojmë një formë të personalizuar dhe të krijojmë një program për të gjetur të gjithë numrat dyshifrorë, shuma e katrorëve të shifrave të të cilëve është e pjesëtueshme me 13. Për të krijuar këtë formë të personalizuar, le të shkojmë te redaktori VB (do të qëndrojmë në të njëjtin libër pune MS Excel si në shembullin 1) dhe të shtojmë një formë tjetër (Fig. 4). Vetitë e objekteve të formës janë paraqitur në tabelën 2. Për të trajtuar ngjarjet klikoni butonin kodin e mëposhtëm: Nën private calc_Click() Oriz. 4. Formuloni për shembull 2 Label2.Caption = "" Përkufizimi i shifrës së parë të një numri dyshifror 'përkufizimi i shifrës së dytë të një numri dyshifror Nëse (i1^2+i2^2) Mod 13=0 Atëherë Label2.Caption = Label2.Caption+Str(i)+" " Nën private pastër_Click() Label2.Caption = "" Nën-in privat exitForm_Click() tabela 2 Prona Titulli = Shembulli 2 Titulli = Numra dyshifrorë, shuma katrorët e numrave të pjesëtueshëm me 13 TextAlign = 2-fmTextAlignCenter Titulli = "" Madhësia automatike = E rreme Prona Titulli = Pastro Titulli = Dalje Në fletën e punës “Shembulli 2” do të vendosim Butoni "Hap formularin" për të hapur formularin "Shembulli 2" dhe hapni këtë formë (Fig. Le të zhvillohemi zakon ndërfaqe dhe make up program për ju shumat e serive: numrat me saktësi ε = 10P k+2 S = ∑ (−
1) k = 1 Le të qëndrojmë në të njëjtin libër pune në Excel, si në shembujt 1 dhe 2. Duke përdorur mjetin Oriz. 5. Numrat dyshifrorë, shuma e katrorit shënimet "Mbishkrim", "Fushë" dhe "Buton" numri i shifrave të cilat janë të pjestueshme me 13 asnjë mjet Elementet menaxhimi Le të vendosim objektet përkatëse në fletën e punës "Shembulli 3" (Fig. 6). Vetitë e objekteve të fletës "Shembulli 3" janë paraqitur në Tabelën 3. Tabela 3 Prona Prona Titulli = Shuma e serive Titulli = Pastro Për të përpunuar ngjarjet e shtypjes së butonave "Llogarit" dhe "Pastro", fut kodin e mëposhtëm të programit në modulin "Fleta 3 (Shembulli 3)": eps = Val(InputBox("Caktimi i saktësisë", "Hyrja e të dhënave")) a = (-1)^(k + 2) / (f * 2^k) s = s + a Loop txtS.Text = s Nën Private clean_Click() txtS.Text = "" Këtu do të jetë trupi i ciklit Do while – Loop të kryhet afati absolute k+2 n− 1 k+2 n+ 2 madhësia (d.m.th. (−
1) −∑
(−
1) (−
1) ) do Oriz. 6. Llogaritni shumën k = 1 k = 1 tejkalojnë saktësinë e specifikuar 10 P Le të kontrollojmë funksionimin e programit (Fig. 7). Le të zhvillohemi zakon Le të shkruajmë një program për të zgjidhur problemin e mëposhtëm. Kur analizohen aktivitetet ekonomike, para- instaluar tjetër model: në janar 2004, fitimi i kësaj ndërmarrja arriti në 573 mijë rubla. dhe gjatë gjatë 5 viteve të ardhshme u rrit çdo muaj me i%, ku i është numri i muajit (d.m.th. në shkurt - me 2%, në mars - me 3%, etj.), krahasuar me shumën e fitimit në Oriz. 7. Rezultati i llogaritjes muajin e kaluar. Përcaktoni para- shumat e serive duke pranuar shumën e fitimit për vitet 2004, 2005, ..., 2008, si dhe shumën totale të fitimit për këto 5 vite. Për të krijuar këtë formë të personalizuar, le të shkojmë te redaktori VB (do të qëndrojmë në të njëjtin libër pune MS Excel si në shembujt 1–3) dhe të shtojmë një formë tjetër (Fig. 8). Prodhimi i vlerave të llogaritura të fitimit të ndërmarrjes do të kryhet si në fushën e objektit të listës (ListBox), të vendosur në formular, ashtu edhe në qelizat e fletës së punës "Shembulli 4" (Fig. 9). Oriz. 8. Formulari “Fitimi i ndërmarrjes” Fig. 9. Tabela për shembull 4 Vetitë e objekteve të formës janë paraqitur në tabelën 4. Tabela 4 Prona Prona Titulli = Fitimi i ndërmarrjes Titulli = Pastro Titulli = Dalje Shënim. Vetia ColumnCount specifikon numrin e kolonave të objektit ListBox. Për të përpunuar ngjarjet e shtypjes së butonave "Llogarit", "Pastro" dhe "Dalje". lëviz" fut kodin e mëposhtëm: Nën Private calc_Click() Dim i, j Si numër i plotë Dim PrM, prG, sPr Si Single PrM = Val(InputBox("Fut fitimin e marrë në janar 2004," "Hyrja e të dhënave")) ListPr.Shto artikull "Viti", 0 'vendosja e nënshkrimeve dhe të dhënave fillestare ListPr.List(0, 1) = "Fitimi, mijë rubla." 'cikël për vit 'ciklojnë muajt e çdo viti Nëse (i = 4) Dhe (j = 1) Atëherë PrM = PrM * (1 + j / 100) Lista Emri. Shprehja e artikullit Shtesë, Indeksi ku Expression është elementi i listës që duhet shtuar; Indeksi – numri serial i një elementi në listë (numërimi i elementeve të listës fillon nga 0). Dhe vetia List (Numri i rreshtit, Numri i kolonës) i objektit ListBox kthen (cakton) elementin e listës që ndodhet në kryqëzimin e rreshtit dhe kolonës së specifikuar. Në fletën e punës “Shembulli 4” do të vendosim butonin “Open Form” për të thirrur formularin “Enterprise Profit” dhe do ta hapim këtë formular (Fig. 10). Tani mund të shtoni një fletë tjetër në librin e punës MS Excel të quajtur "Tabela e Përmbajtjes", në të cilën, për shembull, duke përdorur mjetin Button në shiritin e veglave Forms, do të krijojmë katër butona: "Indeksi i përfitimit", "Numrat me dy shifra". , Ndërmarrjet “Suma e Serive”, “Fitimi”. Në redaktorin VB, shtoni një modul të ri (Insert → Module), në të cilin futim kodin e mëposhtëm: Shembulli i Nën-Fletës Publike1() Fletët e punës ("Shembulli 1").Aktivizo Duke klikuar në butonin "Shkarko arkivin", do të shkarkoni skedarin që ju nevojitet plotësisht pa pagesë. Për të shkarkuar një arkiv me një dokument, futni një numër pesëshifror në fushën më poshtë dhe klikoni butonin "Shkarko arkivin" Hartimi i fletës së raportit “Dyqane” në Excel 2013. Puna me tabela nga familja Microsoft Office. Ndërtimi i grafikëve me byrek dhe histogrameve, grafikëve. Zhvillimi i procedurave për tabelimin e funksioneve. Programimi i funksioneve të përdoruesit në VBA. puna e kursit, shtuar 04/03/2014 Microsoft Office Suite. Tabela MS Excel. Krijimi i një formulari ekrani dhe futja e të dhënave. Formulat dhe funksionet. Shpjegimi i funksioneve të përdoruesit të MS Excel. Formulimi fizik i problemeve. Vendosja e kushteve kufitare për vlerat e pranueshme të variablave. puna e kursit, shtuar 06/07/2015 Karakteristikat e përdorimit të funksioneve të integruara të Microsoft Excel. Krijimi i tabelave, plotësimi i tyre me të dhëna, ndërtimi i grafikëve. Aplikoni formula matematikore për të kryer pyetje duke përdorur paketat e aplikacionit. Kërkesat teknike për kompjuterin. puna e kursit, shtuar 25.04.2013 Organizimi i skedarit dhe aksesi. Operacionet e skedarëve. Programimi duke përdorur funksione të integruara I/O; procese llogaritëse lineare, të degëzuara dhe ciklike duke përdorur operatorin If-else, Case Selection; vargjeve dhe matricave. puna e kursit, shtuar 24.05.2014 Procesori i spreadsheet Microsoft Excel është një program aplikimi i krijuar për të automatizuar procesin e përpunimit të informacionit ekonomik të paraqitur në formën e tabelave; aplikimi i formulave dhe funksioneve për llogaritje; duke komplotuar. abstrakt, shtuar 02/03/2013 Programimi i proceseve llogaritëse në FORTRAN për të siguruar ndërveprimin e sistemit "Njeriu-Prodhimi-Natyra". Përdorimi i grupeve për të përpiluar cikle për llogaritjen e nivelit të ndotjes së mjedisit dhe kostot e përpunimit të mbetjeve. puna e kursit, shtuar 30.05.2014 Krijimi i një aplikacioni që do të vizatojë grafikët e funksionit duke përdorur një shprehje të caktuar matematikore. Zhvillimi i programit “Gjenerator i funksioneve matematikore”. Krijimi i një magjistari funksioni për futjen e një shprehje matematikore, testim. tezë, shtuar 16.02.2016 1. Metodat për ndërtimin e proceseve llogaritëse ciklike në programe. 2. Hyrë në kompjuterNnumra realë. Shkruani një program që shfaq mesataren aritmetike të këtij grupi. Prezantimi Programet ciklike përdoren pothuajse në çdo softuer. Në këtë rast, ciklet mund të jenë eksplicite ose implicite. Në veçanti, cikli i nënkuptuar është i pranishëm në mbajtësit e ndërprerjeve, të cilët në mënyrë efektive funksionojnë në një lak të pafund, trupi i të cilit shkaktohet nga ndërprerja. Nënprogramet - funksionet e dritareve të aplikacioneve të Windows - janë gjithashtu ciklike. Më poshtë shqyrtojmë programet me një lak, trupi i të cilave përmban module funksionale. Procesi ciklikështë një proces llogaritës në të cilin llogaritjet kryhen në mënyrë të përsëritur duke përdorur të njëjtat formula për vlera të ndryshme të argumentit. Programet, zbatimi i një procesi ciklik quhen programe ciklike. Organizimi i ciklit mund të ndahet në fazat e mëposhtme: përgatitja (inicializimi) i ciklit (AND); kryerja e llogaritjeve të lakut (trupi i lakut) (T); modifikimi i parametrave (M); duke kontrolluar gjendjen e përfundimit të ciklit (U). Rendi i këtyre hapave, si T dhe M, mund të ndryshojë. Në varësi të vendndodhjes së kontrollit të gjendjes së përfundimit të ciklit, bëhet një dallim midis cikleve me përfundime të poshtme dhe të sipërme. Për një cikli fundor nga fundi, trupi i ciklit ekzekutohet të paktën një herë sepse fillimisht kryhen llogaritjet dhe më pas kontrollohet kushti për daljen nga cikli. Në rastin e një cikli me fund të sipërm, trupi i ciklit mund të mos ekzekutohet edhe një herë nëse kushti i daljes plotësohet menjëherë. Një cikël quhet determinist nëse numri i përsëritjeve të trupit të lakut dihet ose përcaktohet paraprakisht. Një cikël quhet iterativ nëse numri i përsëritjeve të trupit të lakut është i panjohur paraprakisht, por varet nga vlerat e parametrave (disa variablave) të përfshirë në llogaritjet. Trupi i lakut- Ky është një seksion i përsëritur në mënyrë të përsëritur i programit. Parametri i lakutështë një variabël që merr vlera të reja sa herë që cikli përsëritet (qarqet mund të jenë të thjeshta ose komplekse). Pamje e përgjithshme e lakut n herë Në përgjithësi, një cikli n herë shkruhet kështu: nc numri i përsëritjeve Fjala e shërbimit nts (fillimi i ciklit) dhe kts (fundi i ciklit) shkruhen rreptësisht njëra poshtë tjetrës dhe lidhen me një vijë vertikale. Në të djathtë të kësaj rreshti, është shkruar një sekuencë e përsëritshme komandash (trupi i lakut). Numri i përsëritjeve është një numër i plotë arbitrar. Gjatë ekzekutimit të algoritmit, sekuenca e komandave në trupin e lakut përsëritet numrin e caktuar herë. Rregullat e gjuhës algoritmike lejojnë të specifikoni çdo numër të plotë të përsëritjeve. Mund të jetë zero ose edhe negative. Këto raste nuk konsiderohen të gabuara, trupi i lakut thjesht nuk do të ekzekutohet as edhe një herë, dhe kompjuteri do të vazhdojë menjëherë të ekzekutojë komandat e shkruara pas cc Pamje e përgjithshme e ciklit deri tani Në përgjithësi, cikli aktualisht është shkruar si më poshtë: asnjë kusht ende | trupi i lakut (sekuenca e komandave) Kur kryeni një cikël, kompjuteri përsërit veprimet e mëposhtme: a) kontrollon gjendjen e shkruar pas fjalës së funksionit while; b) nëse kushti nuk plotësohet, atëherë ekzekutimi i ciklit përfundon dhe kompjuteri fillon të ekzekutojë komandat e shkruara pas cc. Nëse kushti plotësohet, atëherë kompjuteri ekzekuton trupin e lakut, kontrollon përsëri gjendjen, etj. Pamje e përgjithshme e ciklit për nc për i nga i1 në i2 | trupi i lakut (sekuenca e komandave) Këtu i është emri i një vlere të tipit të plotë, i1, i2 janë numra të plotë arbitrar ose shprehje me vlera të plota. Trupi i ciklit ekzekutohet në mënyrë sekuenciale për i = i1, i = i1 + 1, i1 + 2, …i = i2. Rregullat e gjuhës algoritmike lejojnë të specifikoni çdo numër të plotë i1, i2. në veçanti, i2 mund të jetë më i vogël se i1. ky rast nuk konsiderohet si gabim - thjesht trupi i ciklit nuk do të ekzekutohet as edhe një herë, dhe kompjuteri do të vazhdojë menjëherë me ekzekutimin e komandave të shkruara pas cc. Loop n herë dhe loop while Unazat n herë dhe deri tani janë formatuar pothuajse në të njëjtën mënyrë në gjuhën algoritmike. Kjo nuk është për t'u habitur, sepse të dyja këto komanda përcaktojnë një lak - një sekuencë të përsëritur komandash. Fjalët e shërbimit nts dhe kts tregojnë se një lak është duke u ekzekutuar, dhe kreu i ciklit specifikon mekanizmin specifik për ekzekutimin e tij. Sidoqoftë, këto dy cikle kanë një ndryshim domethënës. Kur kompjuteri fillon të ekzekutojë një lak n herë, ai e di se sa herë do të duhet të përsërisë trupin e ciklit. Gjatë ekzekutimit të një cikli, kjo nuk është ende rasti: kompjuteri kontrollon gjendjen e ciklit çdo herë dhe nuk mund të përcaktojë paraprakisht se kur do të përfundojë ekzekutimi. Tani për tani, ju mund ta zbuloni numrin e përsëritjeve të një cikli vetëm pasi të përfundojë cikli. Kjo e bën të qartë se në cilat raste duhet përdorur cili lak. Nëse numri i përsëritjeve dihet deri në kohën kur fillon cikli, është e përshtatshme të përdoret cikli n herë. Nëse numri i përsëritjeve nuk mund të përcaktohet paraprakisht, është i nevojshëm një cikël. Për shembull, një program kontrolli automatik ka strukturën e treguar në Fig. 1. Modulet e përfshira në cikël(si dhe modulet e trajtimit të ndërprerjeve), me një hyrje dhe një dalje secila, zakonisht kanë veçorinë karakteristike që modulet përmbajnë variabla statike të cilave u është caktuar një vlerë në ciklin aktual dhe analiza e këtyre variablave kryhet në ciklin e ardhshëm. . Kështu, variablat e përmendur karakterizojnë gjendjen e modulit në fund të ciklit aktual ose në fillim të ciklit të ardhshëm të programit. Në vijim, ne do të shqyrtojmë vetëm module të tilla të programeve ciklike dhe do t'i shënojmë shkurtimisht si MCP. Fig.1. Struktura tipike e një programi kontrolli me një lak të pafund. MCP-të kanë një strukturë të larmishme, kompleksiteti i së cilës duhet të vlerësohet sipas kritereve të veçanta. V.V. Lipaev propozoi një kriter të përshtatshëm dhe objektiv për kompleksitetin e moduleve të softuerit, përkatësisht: numrin dhe gjatësinë totale të shtigjeve në grafikun e kontrollit të modulit. Vetëm deklaratat e kushtëzuara dhe të përzgjedhjes merren parasysh. Sidoqoftë, ky kriter nuk është qartësisht i mjaftueshëm për një MCP me memorie statike, sepse kur analizoni një MCP është e nevojshme të mbani mend vlerat e të gjitha variablave statike të vendosura në ciklin e mëparshëm. Për më tepër, nuk ka rekomandime për standardizimin e algoritmeve dhe programeve, përveç programimit të strukturuar të njohur prej kohësh në gjuhët e programimit të përdorura zakonisht si C dhe Pascal. Ky artikull propozon plotësimin e këtyre boshllëqeve në lidhje me MCP. 2. Fragmente të moduleve të programit ciklik Një fragment me dy terminale, ose thjesht një fragment, do të konsiderohet një seksion i një programi me një hyrje dhe një dalje (duke përfshirë operatorët e ciklit) me supozimin se MCP-të në shqyrtim janë të strukturuara. Fragmenti më i thjeshtë përfshin një deklaratë të vetme. Një sekuencë fragmentesh është gjithashtu një fragment. MCP, nga ana tjetër, është një fragment dhe përbëhet nga një sekuencë fragmentesh. Metoda e fragmenteve të pavarura është propozuar për sintetizimin e strukturës së moduleve që zbatojnë tabelat e vendimeve. Në këtë rast, një fragment që mund të futet kudo në sekuencën e fragmenteve të modulit konsiderohet i pavarur. Pavarësia e vendndodhjes së një fragmenti të tillë është për faktin se të dhënat e analizuara në të nuk gjenerohen në sekuencën e caktuar të fragmenteve, dhe të dhënat e krijuara në fragmentin e pavarur nuk analizohen në këtë sekuencë fragmentesh. Prandaj, fragmente të pavarura mund të ekzekutohen paralelisht (pseudo-paralel). Në Fig. Figura 2 tregon opsionet e mundshme të zbatimit për një modul me dy fragmente të pavarura. Në opsionet "a" dhe "b" fragmentet riorganizohen pa shtrembëruar thelbin e programit; në opsionin “c” fragmentet zbatohen paralelisht. Fig.2. Opsionet për zbatimin e një moduli me fragmente të pavarura: a) dhe b) - zbatimi vijues, c) - zbatimi paralel: një vijë e dyfishtë horizontale tregon paralelizimin e programit, një vijë e trashë horizontale tregon përfundimin e proceseve paralele. Ne do të quajmë një fragment të varur, vendndodhja e të cilit në modul është përcaktuar rreptësisht si fikse. Për shembull, në modulin për njohjen e një karakteri të futur nga tastiera, i pari duhet të jetë fragmenti i varur nga fundi i hyrjes aktuale të karaktereve. Operatorët "fillimi" dhe "mbarimi" i një moduli janë fragmente fikse. Fragmente absolutisht të pavarura nuk ekzistojnë, vetëm sepse në çdo modul gjenden fragmentet fikse të përmendura të fillimit dhe të fundit. Prandaj, një fragment i pavarur, në përgjithësi, ka një zonë të mundshme vendndodhjeje të kufizuar nga dy fragmente të varura reciprokisht. Kjo do të thotë, një përkufizim më i rreptë i një fragmenti të pavarur është si vijon: i pavarur në lidhje me dy fragmente fikse do të quajmë një fragment që mund të vendoset kudo në sekuencën e fragmenteve të kufizuara sipër dhe poshtë nga fragmentet fikse të specifikuara. Në programim, shpesh ka detyra që kërkojnë ekzekutim të përsëritur të të njëjtit grup deklaratash programore me vlera të ndryshme të operandëve të tyre. Procese të tilla quhen ciklike ose thjesht cikle. Një grup deklaratash të përsëritura në mënyrë ciklike formon të ashtuquajturat trup lak, e cila mund të përfaqësohet ose nga një shprehje e thjeshtë ose e përbërë. Ne do ta quajmë ekzekutimin një herë të trupit të ciklit përsëritje. Trupi i një cikli në një program gjithmonë paraprihet nga kokën e ciklit, që përmban emërtimin operatori i ciklit dhe një shprehje që përcakton (drejtpërsëdrejti ose indirekt) numrin e përsëritjeve. Vini re se trupi i lakut është operand i operatorit të ciklit; prandaj, kreu dhe trupi i lakut përbëjnë një njësi strukturore të pandashme të programit. Në vijim, duke përdorur termin " operatori i ciklit", do të nënkuptojmë si kokën ashtu edhe trupin e lakut. Për të organizuar cikle në të gjitha sistemet e programimit, ka të specializuara operatorët e ciklit, përdorimi i të cilit e liron programuesin nga nevoja për të programuar ciklet "me dorë". MathCAD mbështet dy lloje të operatorëve të tillë - cikli me paracaktimin Për
(e quajtur edhe lak me numërues) Dhe lak me parakusht Derisa
. Një përshkrim i strukturës së këtyre operatorëve është dhënë në tabelën 5. 5.4.1 Operatori Për
Ky operator duhet të përdoret në rastet kur numri i përsëritjeve është i paracaktuar, domethënë i njohur paraprakisht. Kreu i ciklit i këtij operatori (operandi i duhur) përmban një variabël të quajtur parametri(ose kundër) ciklit, Dhe lista e vlerave këtë parametër. Numri i elementeve të listës përcakton gjithashtu numrin e përsëritjeve - gjatë çdo përsëritjeje, parametri i lakut merr vlerën tjetër nga lista e specifikuar në kokë. Parametri i lakut ka statusin e një variabli të brendshëm të programit dhe ka të gjitha vetitë e tij (të përshkruara në seksionin 5.1.4). Si rregull, parametri i lakut përdoret në anën e djathtë të shprehjeve të përfshira në trupin e lakut, megjithëse nuk ndalohet zyrtarisht përdorimi i tij në anën e majtë të shprehjeve (d.m.th., në të majtë të përkufizimit lokal operatori "f"). Duhet mbajtur mend se nëse një parametër është ndryshuar në trupin e lakut, vlera e tij e ndryshuar do të jetë e vlefshme vetëm deri në fund të përsëritjes aktuale, pasi para fillimit të përsëritjes tjetër parametri do të marrë ende vlerën tjetër nga lista e specifikuar në kokën e ciklit. Formalisht, lejohet të mos përdoret fare parametri i lakut në shprehjet e trupit të lakut - në këtë rast, lista e vlerave të parametrave nuk luan ndonjë rol - vetëm gjatësia e kësaj liste është e rëndësishme, e cila përcakton numri i përsëritjeve (ndoshta të pakuptimta). Pas përfundimit të përsëritjes së fundit, deklarata e programit që ndjek deklaratën e ciklit do të ekzekutohet. Në këtë rast, ndryshorja e përdorur si parametër i ciklit të përfunduar ruan vlerën që kishte në të fundit të përfunduar në fakt përsëritje[*]. Vini re se kjo vlerë nuk përkon gjithmonë me vlerën e fundit nga lista e specifikuar në kokën e ciklit, pasi një dalje "e hershme" nga cikli është e mundur kur operatori aktivizohet. Pushim
të përfshira në trupin e lakut. Lista e vlerave Parametri i lakut është shkruar në kokën e lakut pas simbolit " Î
", duke treguar anëtarësimin në një grup (ky simbol nuk ka nevojë të futet manualisht - ai do të shfaqet automatikisht kur të hyni në operator Për
). MathCAD lejon përdorimin tre forma shënimet në këtë listë: transferim direkt- elementët e listës janë specifikuar në mënyrë eksplicite të ndara me presje, parametri merr vlerat nga lista në rendin që shfaqen; në stilin e variablit të renditur - elementet e listës formojnë serinë aritmetike përkatëse; varg- elementët e listës marrin në mënyrë sekuenciale vlerat e elementeve të grupit sipas renditjes së indekseve të tyre (së pari, kolonat nga e majta në të djathtë, pastaj rreshtat nga lart poshtë). Tre programet e paraqitura në figurën 21 ilustrojnë përdorime të ndryshme të operatorit Për
. Programi Fakt(n)
njehson faktorialin e një numri n
. Operatori i ciklit në këtë program është pjesë e një shprehjeje të përbërë, e cila, nga ana tjetër, është operandi i një operatori të kushtëzuar. Përndryshe. Parametri i lakut k
merr vlera nga një seri aritmetike me numra të plotë. Programi Ch(V,N,p)
përpunon vektorin e hyrjes V
, duke e zëvendësuar me vlerën fq
ato elemente, indekset e të cilëve specifikohen nga elementet e vektorit të dytë hyrës N
. Në këtë shembull, një listë e vlerave të parametrave të lakut i
të përcaktuara nga një grup elementesh vektoriale N
. Vini re se të dy këto programe kryejnë kontrollin e të dhënave hyrëse dhe bllokojnë ekzekutimin e algoritmit kryesor nëse argumentet aktuale të programit janë specifikuar gabimisht. Programi L(M,z)
dhënë në shembull V
), shoqërohet me komente të hollësishme dhe nuk kërkon shpjegim. Ky program ilustron mundësinë e përdorimit të deklaratave të shumëfishta të ciklit, njëri prej të cilëve përfshihet në deklarata trupi një tjetër. Përdorimi sythe të mbivendosur- një teknikë tipike e përdorur për përpunimin e vargjeve shumëdimensionale. Figura 21 – Shembuj të programimit të ciklit Për
Figura 22 ilustron përdorimin e operatorëve Pushim
Dhe Vazhdoni
në trupin e lakut. Në mënyrë tipike, këta operatorë janë vetë operatorë të operatorëve të kushtëzuar Nëse
ose Përndryshe
. Operatori Pushim
("abort") ndërpret ekzekutimi i ciklit dhe transferimi i kontrollit te operatori pas operatorit të ciklit të ndërprerë. Vini re se nëse operatori Pushim
i ndërprerë lak i mbivendosur, ekzekutimi i lakut të jashtëm do të vazhdojë. Operatori Vazhdoni
("vazhdim") vepron ndryshe - ai ndërpret vetëm përsëritjen aktuale të ciklit dhe transferon kontrollin në kokën e këtij cikli, pas së cilës ekzekutohet cikli vazhdon nga përsëritja tjetër (përveç nëse, sigurisht, përsëritja e ndërprerë ishte e fundit). Operatori Pushim
lejohet të përdoret dhe jashtë trupi i ciklit. Në këtë rast, ekzekutimi i të gjithë nënprogramit ndërpritet dhe rezultati i vlerësimit të shprehjes së fundit të ekzekutuar në të vërtetë kthehet. Figura 22 – Shembuj të përdorimit të operatorëve Pushim
Dhe Vazhdoni
Funksioni Shuma N(V)
mbledh vetëm ato elemente vektoriale që përmbajnë të dhëna numerike skalare dhe anashkalon elementët e mbetur. Funksioni Anasjelltas (V)
formon një vektor, elementët e të cilit janë vlerat e kundërta të elementeve përkatëse të vektorit origjinal. Për më tepër, nëse elementi tjetër përmban numrin "0" ose nuk është një skalar i një lloji numerik, cikli ndërpritet. Vini re se operatori Pushim
në shembullin e fundit nuk e ndërpret programin, por ia transferon kontrollin operatorit Kthimi
, menjëherë pas operatorit Për
. 5.4.3 Operatori Derisa
Ndryshe nga operatori Për
, kreu i deklaratës Derisa
(në përkthim - " Mirupafshim") nuk përmban tregues të qartë të numrit të përsëritjeve - përmban shprehje logjike, vlera e së cilës llogaritet automatikisht para fillimit ekzekutimi i çdo përsëritjeje tjetër[†]. Për sa kohë që kjo shprehje është e vërtetë, cikli do të vazhdojë të përsëritet; Sapo shprehja të bëhet false pas përfundimit të përsëritjes tjetër, përsëritja tjetër e ciklit nuk do të ekzekutohet dhe deklarata e programit që pason deklaratën do të marrë kontrollin Derisa
. Natyrisht, nëse një shprehje logjike identike e rreme vendoset në kokën e ciklit, ky cikli nuk do të plotësojë asnjë nga përsëritjet e tij, dhe nëse kjo shprehje është identikisht e vërtetë, cikli do të jetë i pafund (situata e fundit quhet looping programe). Për të shmangur situata të tilla, operandët e një shprehjeje logjike duhet të përfshijnë një ose më shumë variabla që ndryshojnë vlerat e tyre. në trupin e lakut në mënyrë që cikli të jetë i kufizuar (mund të përdoren mjete të tjera për të parandaluar lakimin - për shembull, duke e detyruar operatorin të dalë nga cikli Pushim
). Shembuj të përdorimit të operatorit Derisa
janë paraqitur në figurën 23. Janë dhënë tri opsione për zgjidhjen e të njëjtit problem: secili nga programet F0
, F1
Dhe F2
kthen indeksin e elementit të parë të vektorit burimorV
duke tejkaluar vlerën e specifikuarz
. Programi i parë (shembull A
) shton një në numërator k
në trupin e lakut Derisa
deri te tjetra k
elementi i th i vektorit origjinal nuk do të kalojë vlerën e specifikuar z
. Pas kësaj, cikli përfundon dhe programi kthen vlerën e fundit të modifikuar të ndryshores k
, e cila është zgjidhja e problemit. Vini re se, ndryshe nga cikli Për
, kundër k
këtu është e nevojshme ta përpunoni atë me deklarata të veçanta: inicializoni (d.m.th., caktoni një vlerë fillestare) përpara operatorit të ciklit dhe ndryshoni vlerën e tij në trupin e ciklit. Është e lehtë të shihet se opsioni A
) i programit ka një pengesë domethënëse: nuk e pengon programin të qarkullojë në rastin kur problemi nuk ka zgjidhje, domethënë kur parametri z
tejkalon vlerën e elementit më të madh të vektorit V
. Në këtë shembull, looping në një situatë të tillë nuk do të ndodhë me të vërtetë - por kjo nuk është meritë e programit tonë, por e sistemit MathCAD, i cili do të kontrollojë daljen e indeksit të vektorit V
jashtë vlerave të lejuara dhe do të gjenerojë një mesazh gabimi. Pa këtë pengesë është opsioni b
) i një programi në të cilin trupi i ciklit përmban një kontroll shtesë për vlefshmërinë e vlerës së indeksit tjetër dhe ndërpret me forcë ciklin me operatorin Pushim
në situatën e duhur me lëshimin e një mesazhi me tekst. Ndoshta zgjidhja më efektive për këtë problem është opsioni V
), i cili nuk e përdor fare operatorin Derisa
. Në këtë program ndryshorja k
përdoret vetëm për të ruajtur "pastërtinë e stilit" - për të përjashtuar përpunimin e parametrit të lakut i
jashtë operatorit Për
. Figura 23 – Shembuj të programimit të ciklit Derisa
PROGRAMIMI I PROCESEVE CIKLIKE KOMPJUARIKE
Informata themelore
ListBox përdor metodën AddItem për të shtuar artikuj në listë
Përpara se të shkarkoni këtë skedar, mendoni për ato ese të mira, teste, punime termike, disertacione, artikuj dhe dokumente të tjera që janë të padeklaruara në kompjuterin tuaj. Kjo është puna juaj, ajo duhet të marrë pjesë në zhvillimin e shoqërisë dhe të përfitojë njerëzit. Gjeni këto vepra dhe dorëzojini ato në bazën e njohurive.
Ne dhe të gjithë studentët, studentët e diplomuar, shkencëtarët e rinj që përdorin bazën e njohurive në studimet dhe punën e tyre do t'ju jemi shumë mirënjohës.Dokumente të ngjashme