Аппараттық және бағдарламалық қамтамасыз етуді орнату

Циклдік есептеу процестерін бағдарламалау. Функцияларды қолмен кестелеу және бағдарламалау For операторын пайдаланатын циклды қайталанулардың қажетті саны алдын ала белгілі болған кезде қолдануға ыңғайлы.

Бағдарламалауда біз қайталанатын процестер бар тапсырмаларды жиі кездестіреміз. Сондықтан, біз осындай ұғымды біліп, пайдалана білуіміз керек « циклдік есептеу процестері».

Жаңадан келген бағдарламашыға оларды жалпылама мысал арқылы түсіну оңай болады. Сонымен қатар, барлық бағдарламалау тілдерінде циклдарды жүзеге асыру жолдары бар екенін түсіну маңызды.

Бағдарламалаудағы цикл дегеніміз не?

Цикл - бағдарламалауда ол бірдей әрекеттердің немесе есептеулердің қайталануы деп аталады, бірақ айнымалылардың әртүрлі мәндерімен бірдей тәуелділіктерге сәйкес.

Цикл ұғымымен біз тек бағдарламалауда ғана кездеспейміз. Біздің өміріміздің көптеген салаларында циклдар бар.

Мысалы, табиғаттағы су айналымы – біздің өміріміздегі табиғи айналым.

Ал енді ойланыңыз жалпы ережелержәне есептеу циклдарында қолданылатын ұғымдар.

Циклдік процестің кезеңдері

Жалпы, цикл 4 кезеңде жүзеге асырылуы керек:
  • 1 кезең – циклді дайындау (инициализация).
    Параметр мен цикл айнымалысы үшін бастапқы мәнді орнату.
    Цикл параметрі- цикл қадамдарының санын есептейтін бұл мән (циклдің қайталану саны).
    цикл айнымалысыциклдің әрбір кезеңінде өз мәнін өзгертетін мән болып табылады.
    Инициализацияпараметрге және цикл айнымалысына бастапқы мәндерді тағайындау болып табылады.
  • 2 кезең - цикл денесі.
    Бұл циклдегі әрекеттің бірнеше рет қайталануы немесе айнымалылардың әртүрлі мәндері бар бірдей математикалық тәуелділіктер бойынша есептеулер.
  • 3-кезең – циклды өзгерту (өзгерту).
  • 4-кезең – циклды басқару.
    Бұл циклдің жалғасуы немесе басталуы шартының сынағы.
Паскаль тілінде кез келген орындай алатын 3 цикл операторы бар алгоритмдік – циклдік құрылым :
  1. Параметрі бар цикл операторы
  2. Алғы шарты бар цикл операторы
  3. Постшартпен цикл операторы
Оларды келесі мақалада егжей-тегжейлі қарастырамыз.

ЦИКЛДЫҚ ЕСЕПТІК ПРОЦЕСТЕРДІ БАҒДАРЛАМАЛАУ

Негізгі ақпарат

Бір мәлімдеме немесе мәлімдемелер тобы аргументтің әртүрлі мәндерімен қайта-қайта орындалатын процесс деп аталады. циклдік процесс . VBA келесі түрлерден тұратын қайталанатын әрекеттерді орындау үшін цикл мәлімдемелерін пайдаланады:

оператор параметрі бар цикл For - Next , егер контурдың денесін неше рет қайталау керектігі алдын ала белгілі болса, конструкциясы қолданылады:

Есептегіш үшін = бастапқы_мән Содан соң соңғы_мән Қадам қадам мәлімдемесі_блок

Әрі қарай дойбымен

операторлар алғы шарты бар циклнемесе постшарт, олар цикл денесінің қайталануларының белгісіз санымен циклды ұйымдастыру үшін қолданылады:

Цикл дизайны

Цикл дизайны

алғы шартпен келесідей көрінеді:

постшартпен келесідей көрінеді:

Шартты орындаңыз

мәлімдеме_блок

мәлімдеме_блок

Уақытша цикл

Шартқа дейін орындаңыз

мәлімдеме_блок

мәлімдеме_блок

Шартқа дейін цикл

күйі

мәлімдеме_блок

Біз тапсырыс нысанын әзірлейміз және жабдықты жаңарту үшін ұсынылған инвестициялық жобаның кірістілік индексін анықтау үшін бағдарламаны құрастырамыз, егер бастапқы инвестицияның сомасы (IP) 10 000 мың рубль болса, дисконт мөлшерлемесі r = 10% және күтілетін ақша қаражаты. ағындары келесідей:

Ақша ағыны (CFk B ),B мың рубль

Пайдаланушы пішіні (1-сурет) сияқты болсын және 1-5-ші жылдардағы ақша ағындарының мәндері «1-мысал» жұмыс парағының ұяшықтарынан оқылады (2-сурет).

Пішін объектілерінің қасиеттері 1-кестеде берілген.

Күріш. 1. «Крентабельділік индексі

табыстылық

инвестициялық жоба»

формуласымен есептеледі

∑n

DPk

IR =

k = 1 (1+r)

мұндағы n – ақша түсімдері келетін жылдар саны.

Күріш. 2. Ақша ағындарын бөлу кестесі

1-кесте

Меншік

Меншік

Тақырып = Жалдау индексі-

Тақырып = Бастапқы өлшем

инвестициялық өміршеңдігі

инвестициялар

ші жоба

Тақырып = дисконт мөлшерлемесі

Тақырып = Табыстылық индексі

Тақырып = Таза

Тақырып = Шығу

«Есептеу» түймесін басу оқиғасын өңдеу үшін келесіні енгізіңіз

Жеке қосалқы calc_Click()

‘айнымалылар түрін орнату

Dim pv, dp, i, n Integer ретінде

Dim r, s As Single

‘ айнымалы мәндерді оқу

pv = Val(txtPV.Мәтін)

r = Val(txtSD.Text) / 100

n = Val(InputBox("Қан жылдар санын енгізіңіз

кел

ақшалай

түбіртектер», «Деректерді енгізу»))

«ақша ағындарының мәндерін оқу

dp = Ұяшықтар(2, i + 2)

'қорытындысы

txtIR.Text = Round(s / pv, 2) 'дөңгелек және нәтижені басып шығару

Round(N, k) функциясы N-дан k ондық таңбаға дейін дөңгелектейді.

Әрі қарай құралдар тақтасының түйме элементін пайдалану Басқару элементтері«Пайдалылық индексінің формасы» процедурасын іске қосу үшін кестенің астындағы «Форманы ашу» түймесін орналастырайық (3-сурет). Бұл процедураның коды келесідей көрінеді:

Private Sub FormIndexProfitability_Click()

Күріш. 3. Инвестициялық жобаның табыстылық индексін анықтау

Құрылған «Форманы ашу» батырмасын пайдаланып, форманы іске қосамыз және инвестициялық жобаның табыстылық индексін есептейміз (3-сурет).

Біз теңшелетін пішінді әзірлеп, квадрат цифрларының қосындысы 13-ке бөлінетін барлық екі таңбалы сандарды табу бағдарламасын жазамыз.

Бұл пайдаланушы пішінін жасау үшін VB редакторына (1-мысалдағыдай MS Excel жұмыс кітабында қаламыз) өтіп, басқа пішінді қосамыз (4-сурет).

Пішін объектілерінің қасиеттері 2-кестеде берілген.

Түймені басу оқиғаларын өңдеу үшін

келесі код:

Жеке қосалқы calc_Click()

Күріш. 4. Пішін, мысалы 2

Label2. Caption = ""

«екі таңбалы санның бірінші цифрын анықтау

«екі таңбалы санның екінші цифрын анықтау

Егер (i1^2+i2^2) Mod 13=0 Содан кейін Label2.Caption = Label2.Caption+Str(i)+" "

Жеке қосалқы таза_Click()

Label2. Caption = ""

Жеке қосалқы exitForm_Click()

кесте 2

Меншік

Тақырып = 2-мысал

Тақырып = Екі таңбалы сандар, қосынды

цифрлары 13-ке бөлінетін квадраттар

TextAlign = 2-fmTextAlignCenter

тақырып = “ ”

autosize=false

Меншік

Тақырып = Таза

Тақырып = Шығу

«2-мысал» жұмыс парағында орын

пішінді шақыру үшін «Пішінді ашу» түймесін басыңыз

«2-мысал» және іске қосыңыз бұл пішін(күріш.

Біз дамытамыз

әдет-ғұрып

интерфейс

және жасаңыз

сізге арналған бағдарлама

жол қосындылары:

ε = 10Р дәлдікпен есептеулер

k + 2

S = ∑

(− 1)

k = 1

Бір Excel жұмыс кітабында болыңыз

1 және 2 мысалдардағыдай. Құралды пайдалану

Күріш. 5. Екі таңбалы сандар, квадраттардың қосындысы

полицейлер «Жазу», «Өріс» және «Түйме» па-

13-ке бөлінетін цифрлар саны

құралдар тақталары

Элементтер

басқару

«3-мысал» жұмыс парағына сәйкес объектілерді орналастырайық (6-сурет).

«3-мысал» парақ объектілерінің қасиеттері 3-кестеде берілген.

3-кесте

Меншік

Меншік

Тақырып = Жол сомасы

Тақырып = Таза

«Есептеу» және «Тазалау» түймелерін басу оқиғаларын өңдеу үшін «Sheet3 (3-мысал)» модуліне келесі бағдарлама кодын енгізіңіз:

eps = Val(InputBox("Дәлдікті орнату", "Енгізу"))

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

Цикл txtS.Text = s

Жеке қосалқы clean_Click() txtS.Text = ""

Мұнда Do While - Loop денесі болады

орындалады

мерзімі

абсолютті

k + 2

n− 1

k + 2

n+ 2

өлшемі (яғни.

(− 1)

−∑

(− 1)

(− 1)

) болады

Күріш. 6. Қосындыны есептеу

k = 1

k = 1

көрсетілген дәлдіктен 10 P асып кету

Бағдарламаның жұмысын тексерейік (7-сурет).

Біз дамытамыз

әдет-ғұрып

Келесі есепті шешу үшін программа жазайық.

Экономикалық белсенділікті талдау кезінде алдын ала

орнатылған

Келесі

жүйелілік: 2004 жылдың қаңтарында пайда осы

кәсіпорындар 573 мың рубльді құрады. және кезінде

келесі 5 жылда ай сайын i%-ға өсті,

мұндағы i – айдың саны (яғни ақпанда – 2%-ға, наурызда

- 3%-ға және т.б.), жылы пайда сомасымен салыстырғанда

Күріш. 7. Есептеу нәтижесі

алдыңғы ай.

Алдын ала алынғанын анықтау

қатар қосындылары

2004, 2005, ..., 2008 жылдардағы пайда сомасын, сондай-ақ осы 5 жылдағы пайданың жалпы сомасын қабылдау арқылы.

Бұл пайдаланушы пішінін жасау үшін VB редакторына (1-3 мысалдардағыдай MS Excel жұмыс кітабында қаламыз) өтіп, басқа пішінді қосамыз (8-сурет). Кәсіпорын табысының есептелген мәндерін шығару формада орналастырылған тізім объектісінің (ListBox) өрісінде де, «4-мысал» жұмыс парағының ұяшықтарында да орындалады (9-сурет). ).

Күріш. 8. «Кәсіпорынның пайдасы» нысаны Сурет. 9. Кесте, мысалы 4

Пішін объектілерінің қасиеттері 4-кестеде берілген.

4-кесте

Меншік

Меншік

Тақырып = кәсіпорынның пайдасы

Тақырып = Таза

Тақырып = Шығу

Ескерту. ColumnCount сипаты ListBox нысанындағы бағандар санын көрсетеді.

«Есептеу», «Тазалау» және «Сіз-» түймелерін басу оқиғаларын өңдеу үшін

жылжытыңыз» келесі кодты енгізіңіз:

Private Sub calc_Click() Dim i, j Integer ретінде

Dim PrM, prG, sPr жалғыз

PrM = Val(InputBox("2004 жылғы қаңтарда тапқан пайданы енгізіңіз", "Кіріс"))

ListBox тізімге элементтерді қосу үшін AddItem әдісін пайдаланады

ListName.AddItem Өрнек , Индекс

мұндағы Өрнек қосылатын тізім элементі; Индекс – тізімдегі элементтің реттік нөмірі (тізім элементтерінің нөмірленуі 0-ден басталады).

Ал ListBox нысанының List қасиеті (LineNumber, ColumnNumber) көрсетілген жол мен бағанның қиылысында тізім элементін қайтарады (тағайындайды).

«4-мысал» жұмыс парағында «Кәсіпорын пайдасы» пішінін шақыру үшін «Пішінді ашу» түймесін орналастырыңыз және осы пішінді іске қосыңыз (10-сурет).

Енді сіз MS Excel жұмыс кітабына «Мазмұны» деп аталатын басқа парақты қосуға болады, онда, мысалы, Пішіндер құралдар тақтасындағы Түйме құралын пайдаланып, біз төрт түймені жасаймыз: «Кірістілік индексі», «Екі таңбалы сандар», « Жол сомасы», «Пайдалы кәсіпорындар».

VB редакторында қосыңыз жаңа модуль(Кірістіру → Модуль ), оған келесі кодты енгіземіз:

Жалпы ішкі тізімМысал1()

Жұмыс парақтары («1-мысал»).Іске қосу

ListPr.AddItem "Жыл", 0

‘бастапқы қолтаңбалар мен деректерді орнату

ListPr.List(0, 1) = "Пайдасы, мың рубль."

«жылдар бойынша цикл

«әр жылдың айлары бойынша цикл

Егер (i = 4) және (j = 1) болса, онда

PrM = PrM * (1 + j / 100)

Зертхана №2

«Циклдік есептеу процестерін бағдарламалау»

Жұмыс мақсаты

C++ тілінде циклдік операторларды үйрену.

Теориялық бөлім

Цикл- командалар жиынының бірнеше рет орындалуын ұйымдастыруға арналған жоғары деңгейлі программалау тілдеріндегі басқару құрылымының бір түрі. Сондай-ақ циклды кез келген жолмен ұйымдастырылған нұсқаулардың қайталанатын орындалатын кез келген тізбегі деп атауға болады.

Бірнеше рет орындауға арналған нұсқаулар жиынтығы деп аталады цикл денесі . Цикл денесін бір рет орындау шақырылады итерация . Итерацияның қайта орындалатынын немесе цикл аяқталатынын анықтайтын өрнек шақырылады шығу жағдайы немесе циклді тоқтату. Ағымдағы итерация нөмірін сақтайтын айнымалы деп аталады итерация есептегіші цикл немесе жай есептегіш цикл. Цикл міндетті түрде есептегішті қамтымайды, бірнеше есептегіш болуы мүмкін – циклден шығу шарты циклде өзгертілетін бірнеше айнымалыларға байланысты болуы мүмкін.

Кез келген циклдің орындалуы цикл айнымалыларының бастапқы инициализациясын, шығу шартын тексеруді, цикл денесін орындауды және әрбір итерацияда цикл айнымалысын жаңартуды қамтиды. Сонымен қатар, бағдарламалау тілдерінің көпшілігі циклді ертерек басқару құралдарын ұсынады, мысалы, циклды аяқтау операторлары, яғни шығу шартының ақиқатына қарамастан (С тілінде - үзіліс) және итерацияны өткізіп жіберу операторлары циклден шығу. (С тілінде – жалғастыру).

Циклдердің келесі түрлері бар.


1. Шартсыз циклдар.Циклдер , бағдарлама логикасы қамтамасыз етілмеген шығу. Атиптілігіне байланысты бағдарламалау тілдері шексіз циклдарды құру үшін арнайы синтаксистік құралдарды қамтамасыз етпейді, сондықтан мұндай циклдар қарапайым (немесе) жасауға арналған конструкциялар арқылы жасалады. шартты) циклдар. Мысалы, Си тілінде цикл қолданылады үшін(;;)бос бөлімдермен.

2. Шартты циклдар.Бұл циклдар, олардың орындалуы цикл денесінің басында немесе соңында тексерілетін қандай да бір шартпен басқарылады. Сәйкесінше, шартты циклдер алғы шартпен және кейінгі шартпен келеді. Алдын ала шарты бар цикл - оның басталуына дейін көрсетілген кейбір шарт ақиқат болғанда орындалатын цикл. Бұл жағдай тексеріледі бұрынцикл денесінің орындалуы, сондықтан дене бір рет болса да орындалмауы мүмкін (егер шарт ең басынан жалған болса). Процедуралық программалау тілдерінің көпшілігінде оны оператор жүзеге асырады кезінде, сондықтан оның екінші аты – while-loop. C++ тілінде мұндай цикл келесідей көрінеді:

кезінде(<условие>)

<тело цикла>

Постшартпен цикл -шарт тексерілетін цикл кейінцикл денесінің орындалуы. Бұдан цикл әрқашан кем дегенде бір рет орындалатыны шығады. Паскаль тілінде бұл циклды оператор жүзеге асырады қайталаңыз.. дейін, С тілінде - істеу... әзірше, Мысалға:

<тело цикла>

кезінде(<условие продолжения цикла>);

Әртүрлі тілдерде постшартпен цикл шартын қолдануда кейбір айырмашылықтар бар. Паскаль тілінде және одан шыққан тілдерде мұндай циклдің шарты ретінде қарастырылады шығу жағдайыШарт ақиқат болғанда цикл аяқталады. C тілінде - қалай жалғастыру шарты(шарт жалған болғанда цикл аяқталады; мұндай циклдар кейде «while циклдары» деп аталады).

Ортасынан ілмек- шартты циклдің ең жалпы түрі. Синтаксистік тұрғыдан мұндай цикл үш конструкцияның көмегімен қалыптасады: циклдің басы, циклдің соңы және циклдан шығу командасы. Бастау конструкциясы цикл денесі басталатын бағдарламаның нүктесін анықтайды, соңғы конструкция дененің аяқталатын нүктесін анықтайды. Корпустың ішінде циклден шығу пәрмені болуы керек, оны орындағаннан кейін цикл аяқталады және басқару цикл соңы конструкциясынан кейін операторға беріледі. Әрине, цикл бірнеше рет орындалуы үшін шығу командасын шартсыз шақырмай, тек циклден шығу шарты орындалғанда ғана шақыру керек.

Циклдің негізгі ерекшелігі осы түрдегіцикл басталғаннан кейін және шығу пәрменіне дейін орналасқан цикл денесінің бөлігі әрқашан орындалады (тіпті бірінші итерацияда циклден шығу шарты ақиқат болса да), ал цикл денесінің бөлігі цикл басталғаннан кейін орындалады. exit пәрмені соңғы итерацияда орындалмайды. Орташа шығу циклінің көмегімен сіз алдын ала шарт циклін (шығу операторын цикл денесінің басына қою арқылы) және кейінгі шарт циклін (шығу операторын цикл денесінің соңына қою арқылы) оңай модельдеуге болады.

Есептегіші бар цикл – бұл қандай да бір айнымалы өзінің мәнін белгілі бір қадаммен берілген бастапқы мәннен соңғы мәнге өзгертетін және осы айнымалының әрбір мәні үшін цикл денесі бір рет орындалатын цикл. Процедуралық программалау тілдерінің көпшілігінде оны оператор жүзеге асырады үшін, ол есептегішті («цикл айнымалысы» деп аталатын), өтулердің қажетті санын (немесе санауыштың шекті мәнін) және, мүмкін, есептегіштің өзгеретін қадамын көрсетеді.

Кейбір тілдерде, мысалы, C және одан алынған басқалары, цикл үшін, есептегіші бар циклдің синтаксистік формасына қарамастан, шын мәнінде алғы шарты бар цикл болып табылады. Яғни, C тілінде цикл құрылымы:


үшін (i = 0; i< 10; ++i)

Цикл денесі

шын мәнінде құрылыс белгісінің басқа түрін білдіреді:

кезінде (яғни< 10)

Цикл денесі

Яғни, for құрылымында алдымен циклды инициализациялаудың ерікті сөйлемі жазылады, содан кейін жалғастыру шарты және, ең соңында, әрбір цикл денесінен кейін орындалатын кейбір операция (бұл қарсы өзгерту болуы міндетті емес; ол өңдеу болуы мүмкін меңзер немесе кейбір толығымен бөгде операция). Мұндай тілдер үшін жоғарыда сипатталған мәселе өте қарапайым шешілген: санауыш айнымалы толығымен болжамды әрекет етеді және цикл соңында өзінің соңғы мәнін сақтайды.

C++ тілінде цикл

1. for циклі.

For операторын қолданатын циклды қайталанулардың қажетті саны алдын ала белгілі болған кезде қолдануға ыңғайлы. Бұл оператордың синтаксисі:

for (цикл басталар алдындағы әрекет;

циклді жалғастыру шарты;

әрбір цикл итерациясының соңындағы әрекеттер) (

цикл нұсқауы;

цикл нұсқауы 2;

цикл нұсқауы N;

Бұл жазбаның ерекше жағдайы бар (есептегішпен):

үшін (санауыш = мән; санауыш< значение; шаг цикла)

цикл денесі;

Біріншіден, бастапқы мән санауышқа тағайындалады, содан кейін нүктелі үтір қойылады. Содан кейін цикл есептегішінің соңғы мәні орнатылады. Есептегіш мән көрсетілген шекке жеткенде, цикл аяқталады. Содан кейін цикл қадамы орнатылады - цикл санаушысы әрбір өту сайын артып немесе азаятын мән.

Мысалы: 1-ден 1000-ға дейінгі барлық сандардың қосындысын есептеңіз.

#қосу

std аттар кеңістігін пайдалану;

int i; // цикл санауышы

int сомасы = 0; // 1-ден 1000-ға дейінгі сандардың қосындысы.

setlocale(0, "");

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

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

2. while циклі.

Циклдарды ұйымдастыру кезінденемесе істеу... кезіндеитерациялардың қажетті саны алдын ала белгісіз болған кезде қолдануға ыңғайлы. Цикл синтаксисі кезінде C++ тілінде осылай көрінеді.

while (Шарт) (

Цикл денесі;

Бұл цикл жақшада көрсетілген шарт ақиқат болғанша орындалады. while циклі арқылы 1-ден 1000-ға дейінгі сандарды қосудың мысалы:

#қосу

std аттар кеңістігін пайдалану;

setlocale(0, "");

кезінде (яғни< 1000)

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

3. do while циклі

Цикл уақытында жасаңызерекшеленеді кезіндеол циклды орындаған кезде шартқа қарамастан циклдің бір өтуі орындалатыны. Цикл арқылы 1-ден 1000-ға дейінгі сандардың қосындысын табу есебін шешуге арналған бағдарлама уақытында жасаңыз:

#қосу

std аттар кеңістігін пайдалану;

setlocale(0, "");

int i = 0; // цикл санауышын инициализациялау.

int сомасы = 0; // қосынды санауышын инициализациялау.

істеу (// цикл арқылы өту.

) әзірше (і< 1000); // пока выполняется условие.

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

1. Таңдалған опцияға сәйкес есепті шешу үшін C++ тілінде бағдарлама құрастырыңыз.

2. Бағдарламаны енгізу, жөндеу және компиляциялау. Оның дұрыс жұмыс істейтінін тексеріңіз.

1. Бағдарлама алгоритмінің құрылымдық схемасы.

2. Түсініктемелері бар бағдарлама тізімі.

3. Бақылау жүгірістерінің нәтижелері.

Бақылау сұрақтары

1. Циклді, цикл денесін, итерацияны анықтаңыз.

2. Циклдан шығу шарты, итерация санауышы дегеніміз не?

3. Кез келген циклде қандай қадамдар бар?

4. Постшарт циклі қалай жұмыс істейді?

5. Алғы шарты бар цикл қалай жұмыс істейді?

6. Есептегіш цикл қалай жұмыс істейді?

7. Қолдану арқылы цикл қалай жүзеге асырылады мәлімдеме үшін?

8. while операторы арқылы цикл қалай орындалады?

9. Do while операторы арқылы цикл қалай жүзеге асырылады?

1. Келесі таңбалар тізбегін көрсетіңіз

2. Бүтін сандар тізбегі енгізілді (0 – қатардың соңы), оң сандардың ішіндегі ең кішісі мен теріс сандар арасындағы ең үлкенінің айырмасын табыңыз.

3. N бүтін сандардың тізбегін енгізіңіз, тақ сандардың көбейтіндісі мен теріс сандардың ішіндегі ең үлкенінің айырмасын табыңыз.

4. Бүтін сандар тізбегі енгізіледі, 0 – тізбектің соңы. Тізбекте 3, 5 және 7-ге еселік кем дегенде екі бүтін сан бар-жоғын анықтаңыз.

5. N бүтін сандар тізбегі енгізілген. 11-ге еселіктердің ішіндегі ең үлкен санды анықтаңыз.

6. Бүтін сандар тізбегі енгізіледі, 0 – тізбектің соңы. Тізбекте кемінде үш теріс жұп сан бар-жоғын анықтаңыз.

7. N нақты сан тізбегі енгізілген. 20-дан үлкен сандардың ішіндегі ең кішісін анықтаңыз.

8. Бүтін сандар тізбегі енгізілген, 0 – тізбектің соңы. 5-ке еселік емес, 7-ге еселік болатын оң сандар санын және қатардың теріс элементтерінің қосындысын есептеңіз.

9. N нақты сан тізбегі енгізілген. 7-ге еселік болатын тізбектің элементтері арасындағы арифметикалық ортаны анықтаңыз.

10. Сандар тізбегі енгізіледі, 0 - тізбектің соңы. Реттілік қатаң түрде төмендейтінін анықтаңыз.

12. Бүтін сандар тізбегі енгізілген, 0 – тізбектің соңы. Тізбекте кем дегенде екі көршілес натурал сан бар-жоғын анықтаңыз.

13. N нақты сан тізбегі енгізілген. Тізбектің таңбамен ауыспалы екенін анықтаңыз.

14. N нақты сан тізбегі енгізілген. Тізбектің минималды оң және ең үлкен теріс элементтері арасындағы айырмашылықты анықтаңыз.

15. 1-ден N аралығындағы төрттің соңғы үш еселігін табыңыз. Осы сандардың қосындысын есептеңіз.

16. Келесі таңбалар тізбегін көрсетіңіз

18. N1-ден N2 аралығындағы 5-ке бөлінбейтін соңғы үш санның көбейтіндісін есептеңдер.

19. 1-ден К аралығындағы төртке еселік емес жұп сандардың арифметикалық ортасын есептеңдер.

Жұмыс мақсаты:

For, while, do - while циклдік операторларын зерттеу үшін циклдік алгоритмдерді құруды және бағдарламалауды үйреніңіз.

Қысқаша теориялық ақпарат

Цикл операторлары кейбір әрекеттерді (операторлар мен операцияларды) бірнеше рет қайталау қажет болғанда қолданылады және алгоритмдердің мұндай бөлімдері циклдар деп аталады.

for цикл мәлімдемесі

for циклінің операторының негізгі түрі болып табылады

үшін (өрнек_1; өрнек_2; өрнек_3)

оператор;

қайда өрнек_1– цикл параметрінің бастапқы мәні;

өрнек_2– циклді жалғастыру шартын тексеру;

өрнек_3– цикл параметрін өзгерту (түзету);

операторқарапайым немесе күрделі С операторы болып табылады.

Оператордың жұмыс схемасы келесідей: өрнек_1 есептелгеннен кейін ғана өрнек_2 тексеріледі, ал егер ол «ақиқат» болса, онда бағдарламаның циклдік бөлімі орындалады, содан кейін параметр түзетіледі және өрнек_2 болғанша осылай жалғасады. «жалған» мәнін қабылдайды.

Мысалы:үшін (k=1; k<5; k++)

printf("\n %d", k);

Осы операторды орындау нәтижесінде 1-ден 4-ке дейінгі сандар бағанға басып шығарылады.

Кез келген негізгі түрдегі айнымалыны цикл параметрі ретінде пайдалануға болады.

Мысалы:

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

printf(“%c”,ch); // латын әліпбиі

Шексіз цикл (одан шығу жоқ) болмас үшін бағдарламадағы for циклдерінің құрылымын мұқият бақылау керек.

мысалы:

үшін(k=10;k>6;k++)

printf("шексіз цикл \n");

Циклдан шығыңызкелесі жолдармен ерте:

Қосымша шарт бойынша;

Келесі мәлімдемелерді пайдалану:

үзіліс;- үзіліс орналасқан циклден шығу, басқару циклден кейінгі бірінші орындалған операторға беріледі;

exit(intCode);- бағдарламадан шығу;

қайтару;- функциядан шығу;

Шартсыз өту операторын қолдану бару<метка>;

Ерте ағымдағы циклдік қадамның соңықосымша шарттың немесе оператордың көмегімен мүмкін жалғастыру, ол ағымдағы цикл қадамының орындалуын үзеді, яғни. циклдің қалған операторларының операторларын өткізіп жібереді және параметрді түзету және шартты тексеру үшін циклдің бас операторына басқаруды береді.

Басқаруды циклдің сыртынан ішкі жағына ауыстыруға тыйым салынады.

Жақшадағы for циклінің өрнектерінің кез келгені болмауы мүмкін, бірақ «;» таңбасы. тастауға болмайды.

мысалы:

үшін(;і<3; i++)

puts («Сәлеметсіз бе!»);

while және do-whi операторларының циклі

Циклдік оператордың негізгі түрі кезінде:

Әзірге (шарт)

оператор;

қайда оператор

Шарт «шын» деп бағаланғанша, цикл орындалады, яғни. жақшаға алынған өрнек бос емес нәтижені қайтарады. Бұл алғы шарты бар цикл – алдымен шарт тексеріледі, содан кейін оператор орындалады. Сондықтан, егер шартты бағалаудың бастапқы нәтижесі 0 болса да while циклі бір рет орындалмайды.

Негізгі оператор формасы істеу - кезінде:

оператор;

while (шарт);

қайда операторжай, күрделі немесе бос сөйлем болып табылады.

Оператор істеукезіндекейінгі шарты бар цикл операторы болып табылады, яғни. алдымен мәлімдеме орындалады, содан кейін шарттың ақиқаттығы тексеріледі. do-while циклінде шарт цикл соңында тексерілетіндіктен, цикл кем дегенде бір рет орындалады.

while және do–while сияқты циклдерде for операторындағы сияқты циклден ерте шығу және циклдің ағымдағы қадамын ерте тоқтату әдістеріне рұқсат етіледі, бірақ соңғы жағдайда for циклінен айырмашылығы басқару жағдайын тексеруге ауыстырылды. while және do-while циклдарының ішінде шексіз циклды болдырмау үшін шартқа енгізілген айнымалыларды өзгертуді қамтамасыз ету керек.

Мысалы:

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

егер (i%5!=0) жалғастыру;

printf("%5d",i);

Шексіз циклдердің мысалдары:

оператор;

2) while(number_not_0) // Әрқашан шын!

оператор;

оператор;

while(саны_0); // Әрқашан шын!

Цикл мәлімдемелерінің арасында шығу шарты болуы керек.

Кірістірілген циклдар

Кірістірілген ілмектер жағдайында бір цикл екіншісінің ішінде болады, мысалы:

үшін(i=nn;i

үшін(j=mn;j

оператор;

қайда операторжай, күрделі немесе бос сөйлем болып табылады. Ішкі цикл сыртқы циклдің шартын қанағаттандыратын i параметрінің әрбір мәні үшін орындалады.

Мысалы:

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

үшін(j=1;j<4;j++)

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

printf("\n");

for операторын қолдану мысалы

Есептеңіз. Бағдарлама аралық және соңғы нәтижелерді басып шығаруы керек.

Бағдарлама мәтіні келесідей болуы мүмкін

#қосу

#қосу

puts («N енгізіңіз»);

scanf(“%d”,&N);

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

( // тапсырманы қабылдау және қосарландыру

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

printf("\n ЖАУАП: s=%f, Кез келген пернені басыңыз...",s);

Жеке тапсырмалардың нұсқалары

Функция мәндерінің кестесін анықтау программасын жазыңыз сағерікті диапазонда [ а,б] аргумент өзгереді Xерікті қадаммен h. Құндылықтар a, b, hпернетақтадан енгізілді. Кестеде келесі бағандар болуы керек: сериялық нөмір, аргумент мәні x, функция мәні, функцияның ұлғаюы немесе кемуі туралы хабарлама, екі көрші функция мәндерінің арасындағы айырмашылық.

Функцияның ең үлкен және ең кіші мәндерін анықтаңыз.

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.

«Циклдік есептеу процестерін бағдарламалау»

Жұмыс мақсаты:циклдік есептеу процестерінің алгоритмдерін құрастыру және күрделі құрылымды циклдік бағдарламаларды ұйымдастыру әдістерін меңгеру.

Теориялық бөлім

4.1.1. Циклдік алгоритмдер.

Цикл – бірнеше рет орындалатын әрекеттер тізбегі.

Циклдік алгоритм – бір немесе бірнеше циклді қамтитын алгоритм.

Циклдің 3 түрі бар:

Алғы шарты бар цикл;

Постшартпен цикл;

Есептегішпен цикл (санау циклі).

Егер циклдің орындалуы қандай да бір логикалық шартпен байланысты болса, онда алғы шарты немесе кейінгі шарты бар циклдер қолданылады.

Санау циклдері цикл денесінің орындалуы алдын ала анықталған рет қайталануы тиіс классты білдіреді.

Циклдік алгоритмдердің блок-схемалары келесідей:

1. Есептегішпен цикл.

2. Алғы шарты бар цикл. 3. Постшартпен цикл.

4.1.2 C++ программалау тіліндегі цикл операторлары.

C++ тілінде әрбір цикл түріне сәйкес оператор бар:

while циклі (алғы шартпен);

do...while циклі (постшартпен);

For циклі (есептелетін).

1. while сияқты цикл операторы

Жазу формасы:

while (шарт) мәлімдемесі;

мұндағы: (шарт) – логикалық өрнек;

оператор – циклде орындалатын оператор немесе цикл денесі.

Егер цикл денесі құрама оператор болса, онда ол оператор жақшаларына (...) алынуы керек:

ал (шарт)

оператор тобы

Мұндай циклдің жұмыс істеу схемасы: шарт ақиқат (ақиқат) болған кезде цикл денесі орындалады және шарт қайтадан тексеріледі, т.б. Шарт жалған болғанда, цикл аяқталады.

2. Do…while сияқты цикл операторы

Жазу формасы:

оператор;

while (шарт);

Мұндай циклдің жұмыс істеу схемасы: алдымен оператор орындалады, содан кейін шарт тексеріледі, егер шарт ақиқат болса, оператор орындалады және шарт қайтадан тексеріледі, т.б. Шарт жалған болғанда, цикл аяқталады.

Егер цикл денесі құрама мәлімдеме болса, онда алғы шарты бар циклге келетін болсақ, ол оператор жақшаларына (...) алынуы керек:



оператор тобы

while (шарт);

3. for сияқты цикл операторы

Жазу формасы:

оператор;

A - цикл параметрі үшін бастапқы мәндерді және қажет болған жағдайда басқа параметрлер үшін бастапқы мәндерді орнататын бастапқы өрнек. Мысалы:

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

B - циклды жалғастыру шартын тексеретін шартты өрнек. Мысалы:

С – цикл параметрін және қажет болса басқа параметрлерді арттыратын өсу өрнегі, содан кейін олар тізім түрінде жазылады. Мысалы: x+=0,1, i++

4.1.3 Циклдік есептеу процесі үшін C++ тілінде алгоритм мен бағдарламаны құрастыру мысалы.

Өрнектің мәнін есептеңіз:

б- бастапқы мән, оның мәні пернетақтадан енгізіледі және өзгермейді;

а– 1-қадаммен диапазондағы өзгерістер;

ж– нәтиже, оның мәндері экранда көрсетіледі.

Тағайындау шартының негізінде a айнымалысы бүтін сан болып табылады, сондықтан оны санау циклінде санауыш ретінде пайдалануға болады.

Есепті санау циклі арқылы шешу алгоритмінің блок-схемасы келесідей:

#қосу

#қосу

#қосу

printf("В енгізіңіз:");

scanf(“%f”,&b);

printf("a y\n");

үшін (a=0;a<=10;a++)

printf("%3d",a);

printf("%8.2f\n",y);

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

printf("%8.2f\n",y);

Алғы шарты бар цикл арқылы осы есепті шешу алгоритмінің блок-схемасы келесідей:

Осы алгоритмге сәйкес келетін C++ бағдарламасының мәтіні келесідей:

#қосу

#қосу

#қосу

printf("В енгізіңіз:");

scanf(“%f”,&b);

printf("a y\n");

printf("%3d",a);

printf("%8.2f\n",y);

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

printf("%8.2f\n",y);

else printf("y жоқ\n");

Пост шарты бар цикл арқылы осы есепті шешу алгоритмінің блок-схемасы келесідей:

Осы алгоритмге сәйкес келетін C++ бағдарламасының мәтіні келесідей:

#қосу

#қосу

#қосу

printf("В енгізіңіз:");

scanf(“%f”,&b);

printf("a y\n");

printf("%3d",a);

printf("%8.2f\n",y);

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

printf("%8.2f\n",y);

else printf("y жоқ\n");

кезінде (а<=10);

Практикалық бөлім

4.2.1 Жұмысты орындауға қойылатын талаптар:

Айнымалылардың бірінің мәндер диапазоны үшін №3 зертханалық жұмыстың тапсырмасын орындаңыз. Айнымалы мән, оның өзгеру диапазоны және қадамы 4-кестеде көрсетілген. Жеке тапсырмада көрсетілген циклдердің екі түрі үшін алгоритмдер мен бағдарламалардың блок-схемаларын құрастырыңыз (4-кесте).

Нәтижелердің шығуын айнымалы параметрдің мәндері анық ажыратылатын және оның әрбір нақты мәндері үшін нәтиженің мәндері (3 кестенің 2 бағанынан үш айнымалы) көрсетілетіндей етіп орналастырыңыз. кесте түрінде.

Жұмыс тәртібі.

1. Тапсырманы талдауды орындау, проблемалық тұжырымды тұжырымдау.

2. Алгоритмдердің блок-схемаларын жасаңыз.

3. С++ тілінде программа жазыңыз. Пернетақтадан бастапқы деректерді енгізуді және нәтижелерді экранға шығаруды қамтамасыз етіңіз.

4. Әртүрлі бастапқы деректер бойынша бағдарламаның өнімділігін тексеріңіз.

5. Нәтижелерге талдау жасаңыз.

Жеке тапсырмалардың нұсқалары.

Жеке тапсырмалардың нұсқалары мұғалім журналындағы топтық тізімдегі студент нөміріне сәйкес 4-кестеден таңдалады.

Кесте 4. Жеке тапсырмалардың нұсқалары

№ p/p өзгермелі айнымалы Цикл түрлері
10 ≤ a ≤ 10,Δ a=1
-4 ≤ d ≤ 4, Δ d = 0,5
-6 ≤ x ≤ 3, Δ x = 0,5
0 ≤ b ≤ 3 0, Δ b = 1,5 1. Алғы шарты бар, 2. Есептелетін
-15 ≤ j ≤ 1 0, Δ j = 0,5 1. Алғы шартпен, 2. Кейінгі шартпен
5 ≤ e ≤ 35,Δ e = 2 1. Есептелетін, 2. Постшартпен
-5 ≤ м ≤ 15,Δ m = 1 1. Алғы шарты бар, 2. Есептелетін
1 ≤ c ≤ 70,Δ c=3 1. Алғы шартпен, 2. Кейінгі шартпен
1,5 ≤ c ≤ 15,Δ c = 0,5 1. Есептелетін, 2. Постшартпен
-8 ≤ b ≤ 28,Δ b = 2 1. Алғы шарты бар, 2. Есептелетін
-4,5 ≤ x ≤ 11,5,Δ x = 0,5 1. Алғы шартпен, 2. Кейінгі шартпен
-7 ≤ k ≤ 2,Δ k = 0,3 1. Есептелетін, 2. Постшартпен
-1 ≤ м ≤ 21,Δ m = 1 1. Алғы шарты бар, 2. Есептелетін
-2 ≤ e ≤ 34,Δ e = 2 1. Алғы шартпен, 2. Кейінгі шартпен
-11 ≤ c ≤ 23,Δ c = 2 1. Есептелетін, 2. Постшартпен
-13 ≤ p ≤ 50,Δ p=3 1. Алғы шарты бар, 2. Есептелетін
3,3 ≤ b ≤ 9,3,Δ b = 0,3 1. Алғы шартпен, 2. Кейінгі шартпен
3,5 ≤ y ≤ 12,3,Δ y=0,4 1. Есептелетін, 2. Постшартпен
-7,5 ≤ a ≤ 5,7,Δ a = 0,6 1. Алғы шарты бар, 2. Есептелетін
-1,5 ≤ h ≤ 1,2,Δ h = 0,1 1. Алғы шартпен, 2. Кейінгі шартпен
0 ≤ h ≤ 10,Δ h=0,5 1. Есептелетін, 2. Постшартпен
-15 ≤ b ≤ 15, Δ b=2 1. Алғы шарты бар, 2. Есептелетін
-7 ≤ l ≤ 3, Δ l = 0,5 1. Алғы шартпен, 2. Кейінгі шартпен
-5,5 ≤ b ≤ 6,5, Δ b = 0,5 1. Есептелетін, 2. Постшартпен
1 ≤ k ≤ 9, Δ k = 0,4 1. Алғы шарты бар, 2. Есептелетін
0 ≤ b ≤ 6,9,Δ b = 0,3 1. Алғы шартпен, 2. Кейінгі шартпен
-3 ≤ v ≤ 9,Δ v = 0,6 1. Есептелетін, 2. Постшартпен
-2 ≤ p ≤ 2,6,Δ p = 0,2 1. Алғы шарты бар, 2. Есептелетін

4.3 Бақылау сұрақтары мен практикалық тапсырмалар:

1. while операторы қалай жұмыс істейді?

2. do ... while операторы қалай жұмыс істейді?

3. for операторы қалай жұмыс істейді?

4. Программадағы циклды құрайтын операторлардың астын сыз.

5. while мен do ... while операторларының айырмашылығы неде?

6. Программада бір цикл операторын басқасымен ауыстырыңыз.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!