1. Пәннің оқыту бағдарламасы – SYLLABUS
Семестр 15 оқу аптасынан және 3 сессия аптасынан тұрады.
Пәннің көлемі 3 кредитті құрайды:
Кредит саны
|
Дәрісханалық сабақтар
|
Дәрісханадан тыс сабақтар
|
Барлық сағат
|
Бақылау түрі
|
Дәріс
|
Практикалық сабақтары
|
Зертханалық сабақтар
|
СОӨЖ
|
СӨЖ
|
2
|
|
30
|
-
|
15
|
45
|
90
|
Аралас емтихан
|
Аралық бақылау - семестрдің 8 және 15 аптасы
2. Пән туралы мәліметтер
«Есеп шығару әдістемесі» пәні техникалық және экономикалық ғылыми-зерттеу аймақтарында кеңінен қолданылатын ақпараттық технологияларды үйретеді. Бұл пән мамандыққа сәйкес басқа пәндерді оқытуда жан-жақты қолданылады, сондықтан ол болашақ маманның ақпараттық технология саласындағы білімдерінің негізі болып табылады. “Есеп шығару әдістемесі” пәні практикалық сабақтардан тұрады. Салыстырмалы түрдегі тұрақты кез келген маман білуге қажет динамикалық түрде өзгеретін білім (практикалық мәліметтер) практикалық сабақтарда беріледі.
Пәнді оқыту мақсаты – ақпарат өңдеуге арналған алгоритмдер мен программалау тілдерін пайдалана отырып, оларды техника, технология, экономика және статистика салала- рында қолдану үшін студенттерді дербес компьютерде жұмыс істеу мен өздерінің болашақ кәсіби мамандығына сәйкес программалар құруды оқытып үйрету; есептерді алгоритмдеу негіздерін, программалау тілдерінің жіктелуін, процедураға бағытталған бір тілдің (С++) негіздерін – мәліметтер типтерін, операторларын, функцияларын оқып-үйрену, осы тілде программалаудың практикалық негіздерін меңгеру; бізді қоршаған ортадағы әртүрлі алгоритмдерді құруда, зерттеуде және оны іс жүзіне асыруда кездесетін қиыншылықтармен және программаларды трансляциялау әдістерімен студенттерді таныстыру; алгоритмдерді құрудың және программалаудың тәсілдері мен негізгі қағидаларын үйрету. Бұл пәнді игеру нәтижесінде студенттерде қазіргі ақпараттық мәдениеттің іргетасы қалыптастырылып, программалық жүйелер мен ақпараттық технологияларды үйрену ісін компьютер арқылы аспаптық құралдарды пайдалану жолымен меңгеруі қамтамасыз етіледі.
Пәнді оқыту міндеттері. «Есеп шығару әдістемесі» пәнін оқып үйренгеннен кейін, студент осы пәннен алған білімін басқа пәндердің теориясымен байланыстыра отырып, ақпараттық технологияларды игеріп, тиімді программаларды құра білуі тиіс. Пәнді оқытудың негізгі мәселелері:
а) алгоритмдер мен олардың құрылымдарының негізгі ұғымдарын игеру, ақпаратты қазіргі қоғамның қажетті қоры ретінде бейнелеп, ақпараттық қорларды пайдалануда студенттердің алгоритмдік ойлау қабілетін қалыптастыру;
ә) студенттерді программалау тілдерінің негізгі сипаттамаларымен таныстырып, процедураға негізделген программалау тілдерінде жұмыс істеу негіздерін үйрету;
б) күнделікті оқу процесінде кездесетін әртүрлі есептерді шығара отырып, программалық файлдарды дискілерде сақтауды, қағазға басып шығаруды, әр түрлі мәліметтерді программаға енгізіп, олардың көшірмесін алуды және де графикалық ортада геометриялық бейнелер графиктерін құрып, оларды пайдалану ісіне дағдыландыру болып табылады.
Бұл пәнді меңгерген әрбір студент төмендегі жұмыстарды орындай білуі тиіс:
программалық тілде мәліметтер өңдеу, алгоритмдерді талдау тәсілдерін игеру;
әртүрлі программалар құра отырып, мәліметтерді сызықтық, тармақты және қайталау алгоритмдер типіне келтіріп, олардың мүмкіндіктерін толық пайдалану;
жиымдарды өңдеу, сұрыптау тәсілдерін меңгеру;
студенттердің логикалық ойлау қабілетін дамыту және жалпы ақпараттық мәдениет деңгейін көтеру, т.б.
Сонымен қатар студенттер программалау арқылы шешілетін есептерді мәселе ретінде қоя білуі, олардың алгоритмдерін құра білуі, күрделілік деңгейлері әртүрлі болып келген есептерді программалай білуі қажет.
3. Студенттерге қойылатын талаптар:
Сабаққа қатысу.
Студент сабаққа қатысуға міндетті. Әрбір қатыспаған сабақ оқу-әдістемелік кешенде көрсетілгендей көлемде тапсырылады. Курстың үштен бір бөлігіндей көлемінде себепсіз сабақ қалдырған студент курстан шығарылады.
Дәрісханадағы тәртіп
Студент сабаққа кешікпей келуі, сабаққа белсенді қатысуы тиіс. Сабақты қабылдауға бөгет болатын нәрселерді ұстамауы (телефон, газет, журнал, фотосуреттер) керек.
Жеке тапсырмалар Семестрде жеке тапсырмаларды орындау міндетті болып есептеледі. Ол реферат түрінде орындалып немесе электрондық нұсқада құрылып, студенттер алдында қорғалады. Әрбір жеке тапсырма бағаланады және ол қорытынды бағалауға әсер етеді. Өзіндік жұмыс
СОБӨЖ сабақ кестесінде бөлінген уақытта орындалады және сабақ соңында тапсырылады. Сабақтан кейін қабылданбайды, бағаланбайды.
Қосымша материалдарды іздеу, берілген тақырыптың мазмұнын тереңдету, практикалық мәнділігін анықтау, т.с.с. тапсырмалар студентке жүктеледі. СӨЖ тапсырмаларды орындау мен тапсыру графигіне сәйкес қабылданады.
Білімді бақылау..
Оқу материалын меңгергендігін практикалық тапсырмаларды орындау, тестілеуден өту, тақырып бойынша жазбаша жауап арқылы тексеріледі.
Бақылау сабақта жүргізіледі, сабақ соңында тапсырылады, сабақ соңынан қабылданбайды және бағаланбайды.
Әңгімелесу.
Әңгімелесу әр топ үшін кесте бойынша жүргізіледі.
4. Пәнді оқыту жөніндегі әдістемелік нұсқаулар
Пәнді оқыту негізінен дәріс, СОБӨЖ және өзіндік жұмыстар түрінде жүргізіледі. Оқу материалының мазмұны дәрісте беріліп, теориялық білім түсініледі.
Курсты оқу нәтижесінде студенттер С тілінің негізімен танысады. Пәнді оқытуда студенттердің алгоритмдеу білімін жетілдіре отырып, төменгі курс та оқылған С тілімен салыстыра отырып түсіндіріледі. Дәрісханалық сабақта негізгі ұғымдар беріліп, қалған білім студенттің өз бетімен меңгеуіне беріледі. Пәнді оқыту барысында аталған бағдарламалау тілінің негізгі операторларын қолдана отырып, күрделі математикалық есептердің программасын құру дағдысы мен іскерлігін қалыптастыру, бағдарламалау технологиясының құрылымдық, модульдік, объектілі-бағдарлы түрлерінің ерекшеліктерін білуге үйрету жүзеге асырылады. Бағдарлама құру методологиясы, қолданылатын жобалау және бағдарламалау технологиясы туралы түсінік қалыптастыру және машықтандыру іскерлігі қалыптастыру жүзеге асырылады.
Негізгі қолданылатын әдістер: программалап оқыту, салыстыра оқыту.
Өздік жұмыста С тілінде студенттер тақырып бойынша берілген есепке байланысты жоба құрастырып, оның программа кодын жаза білу, оны орындату, түзету, нәтижесін талдауды жүзеге асырады. Оқытушы басшылығымен өткізілетін өзіндік жұмыста оқу материалының теориялық қосымша сұрақтары талданады, қосымша берілген есеп жобалары жасалып, тексеріледі және талқыланады. Бақылау сұрақтарының жауаптары тексеріледі. Студенттің үй жұмысында бұрын алған білімдерін бекітуге арналған тапсырмалар беріледі.
Студенттердің білімін тексеру өзіндік жұмыс тапсырмаларын орындауы, шығармашылық жұмыс, коллоквиум, тестілеу түрінде ұйымдастырылады. Шығармашылық жұмыста студенттер паскаль тілінің құралдарын қолданып түрлі тестілеу, бақылау, оқыту, жаттығу программаларын өздігімен жасап, оларды презентациялайды. Шығармашылық жұмыс студенттің алған білімін қорытындылау, шығармашылық белсенділігін арттыру, өз бетімен жұмысын жоспарлай алу, пән бойынша алған білімін өз бетінше қолдана алу сияқты қасиеттерін дамытады. Пәнді оқытуда «Бағдарламалау» оқулығы қолданылады. Ол арқылы студент әр тақырып бойынша өз білімін толықтырады.
5. Курстың мазмұны
Бірінші апта
№1, 2 практикалық сабақтың тақырыбы: Dev- C++ программалау тілінің интерфейсі.
Тапсырма: Берілген формула бойынша өрнектер мәнін есептейтін алгоритм схемасын және соған сәйкес программа жазып шығу керек.
Жұмысты орындауға арналған тапсырмалар
1. Кубтың қыры берілген. Кубтың көлемі мен бүйір бетінің ауданын анықтаңдар.
2. Екі санның арифметикалық және геометриялық ортасын есептеп, нәтижесін шығаратын операторлар тізбегін жазыңыздар (оң сандар берілген деп есептейміз). х, у сандарының геометриялық ортасы: , ал сандарының геометриялық ортасы:
3. Екі санның қосындысын, айырмасын және көбейтіндісін есептейтін программа жазыңыз.
4. Берілген екі катеті бойынша тікбұрышты үшбұрыштың гипотенузасы мен ауданын есептейтін программа жазыңыз.
5. Координаттары x1, y1 және x2, y2 болып келген екі нүкте ара қашықтығын табыңдар.
6. x саны берілген. 2x4 – 3x3 + 4x2 – 5x + 6, 1 - 2x + 3x2 - 4x3 және 1 + 2x +3x2 + 4x3 өрнектерін есептейтін программа құрыңыздар. Мұнда көбейту, қосу және алу амалдарын ғана қолдануға болады. Орындалатын операциялар саны мүмкіндігінше аз болатын болсын.
7. Тең қабырғалы үшбұрыштың қабырғасы берілген. Осы үшбұрыштың ауданын табатын программа құрыңыздар.
8. x, y, z берілген. a, b-ны есептеу керек:
9. x, y, z берілген. a, b-ны есептеу керек:
10. x, y, z берілген. a, b-ны есептеу керек:
11. Екі нақты сан берілген. Солардың арифметикалық ортасын және модульдерінің геометриялық ортасын табыңдар.
12. Үшбұрыш төбелерінің координаттары берілген. Сол үшбұрыштың периметрі мен ауданын анықтаңдар.
13. Арифметикалық прогрессия мүшелерінің a, a + d, … , a + ( n – 1 )d қосындсын берілген a, d, n мәндері арқылы анықтаңдар.
14. Тікбұрышты үшбұрыштың гипотенузасы мен бір катеті берілген. Соның екінші катеті мен іштей сызылған шеңбер радиусын табыңдар.
15. Массалары mжәне mара қашықтықтары r болып келген денелердің бір бірін тарту күшін F анықтаңдар.
16. x, y нақты сандары берілген. Көбейту, қосу және алу амалдары арқылы ғана мына өрнек мәнін 3x2y2 xy2 x2y – 4y2 xy + 2x2 x + 10y + 6 есептеңдер. Амалдар саны сегіз көбейтуден және сегіз қосу мен алудан аспайтын болсын.
17. h биіктіктен жерге құлайтын тастың түсу уақытын табыңдар .
18. x, y, z берілген. a, b-ны есептеу керек:
19. Берілген қабырғаларының ұзындығы a, b, c нақты оң сандар болып келген үшбұрыш тұрғызуға болатыны белгілі болса, сол үшбұрыштың ішкі бұрыштарын табыңдар.
20. Үшбұрыштың бұрыштары мен сырттай сызылған шеңбер радиусы берілген, үшбұрыш қабырғаларын анықтаңдар.
№1.СОБӨЖ
Тақырыбы: С/C++ программалау тілінің негізі.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
С/C++ программалау тілінің алфавиті
Айнымалылар, деректер типтері
Тіл құрамы, алфавиті.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: [19- 21]
№1.СӨЖ
Тақырыбы: С/C++ программалау тілінің негізі.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
С/C++ программалау тілінің алфавиті
Айнымалылар, деректер типтері
Тіл құрамы, алфавиті.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: [19- 21]
Екінші апта
№3, 4 практикалық сабақтың тақырыбы: Сызықтық программа құру.
Тапсырмалар: Берілген есептерді шығару програмаларын құрыңдар.
Жұмысты орындауға арналған тапсырмалар
Тапсырма:С/C++ программалау тілінде сызықтық программа құру.
Төбелері берілген үшбұрыштың периметрі мен ауданын табыңдар.
Екі қабырғасы мен арасындағы бұрышы берілген үшбұрыштың биіктіктерін табыңдар.
Үшбұрыштың үш төбесі берілген. Үшбұрыш қабырғаларының ұзындықтарын, биіктіктерін табыңдар.
Центрі координаталар басындағы, сыртқы радиусы R1, ішкі радиусы R2 сақинаның ауданын табыңдар.
Ақпарат көлемін байтпен өрнектейтін А шамасы берілген. А – ны ақпараттың одан үлкен өлшем бірлігіне айналдырыңдар.
Қараша айында дүкенде А млн теңгеге тауар сатылды, бұл қазан айындағыға қарағанда 15 % артық. Қазан айында қанша ақшаға тауар сатылды?
Қызметкердің жалақы мөлшері берілген. Жалақыдан зейнетақы қорына кететін (10%) жəне кіріс (5%) салықтарының мөлшерін анықтаңдар.
Ақпарат көлемін байтпен өрнектейтін А шамасы берілген. А-ны ақпараттың одан үлкен өлшем бірліктеріне айналдырыңдар.
Əдістемелік нұсқау: Берілген есептің қойылысын талдап, С/C++ тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып,тестілеңдер.
№2.СОБӨЖ
Тақырыбы: С/C++ тіліндегі программа құрылымы. Енгізу, шығару операторлары.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
Программа құрылымы.
Енгізу,шығару операторы.
Түсініктеме, меншіктеу операторы.
Программа құрылымы.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [11-31,103-115], 6 [54- 75]
№2.СӨЖ
Тақырыбы: С/C++ тіліндегі программа құрылымы. Енгізу, шығару операторлары.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
Программа құрылымы.
Енгізу,шығару операторы.
Түсініктеме, меншіктеу операторы.
Программа құрылымы.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [11-31,103-115], 6 [54- 75]
Үшінші апта
№5, 6 практикалық сабақтың тақырыбы: Тармақталу операторы. Құрама шарттар.
Тапсырма: С/C++ программалау тілінде тармақталу операторларының көмегімен
программа құру.
a,b,c сандары берілген. Қабырғалары осы сандар болатын үшбұрыш бола ма?
Берілген нүкте сыртқы радиусы R1, ішкі радиусы R2, центрі координаталар басындағы сақинаға тиісті бола ма?
Үшбұрыштың үш қабырғасы берілген. Берілген үшбұрыш
а) тең бүйірлі
б) тең қабырғалы бола ма?
Енгізілген адам жасына байланысты оны 4 топқа: мектепке дейін, оқушы, қызметкер, зейнеткер, бөлетін программа жазыңдар.
Айдаһарға əр жыл сайын 3 бас шығады, ал жүзге толғаннан кейін 2 бастан шығады. N жастаға айдаһардың неше басы мен неше көзі бар?
А1(Х1,У1),А2(Х2,У2),А3(Х3,У3),А4(Х4,У4) нүктелері берілген. Бұл нүктелер параллелограм төбелері бола ала ма?
N натурал саны берілген. Егер ол сан тақ жəне оны екі еселегенде алынған сан 32767- ден кем болса, онда ол санды 2- ге көбейтіңдер. Керісінше жағдайда берілген санды 5- ке бөліңдер.
Берілген нүкте центрі (1,1) нүктесіндегі, радиусы R шеңберге тиісті бола ма?
Кездейсоқ берілген 3 санның неше əрекеттен кейін «бақытты жетілік» құрайтынын анықтаңдар. Берілген үш таңбалы санның цифрларының қосындысы 5-ке бөліне ме?
Əдістемелік нұсқау: Берілген есептің қойылысын талдап, С/C++ тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып, тестілеңдер.
№3.СОБӨЖ
Тақырыбы: С/C++ тіліндегі тармақталу операторы. Құрама шарттар.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
Шартты оператор.
Шартты операция
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [116-123],7 [6- 33]
№3.СӨЖ
Тақырыбы: С/C++ тіліндегі тармақталу операторы. Құрама шарттар.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
Шартты оператор.
Шартты операция
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 1[ 143- 152]
Төртінші апта
№ 7, 8 практикалық сабақтың тақырыбы: Таңдау командасын қолданып программалау
Тапсырма: С/C++ тіліндегі таңдау командасының көмегімен программа құру.
Ай нөмірі бойынша сол айдағы мейрам күндерін экранға шығаратын программа құрыңдар. (Мысалы: n=1 1- қаңтар Жаңа жыл мейрамы, n=3 8- наурыз Аналар мейрамы, 22- Наурыз мейрамы.)
Апта күні нөміріне байланысты, сол күнде болатын сабақ санын шығарыңдар.
1-ден 12 – ге дейінгі натурал санға сəйкес ай атын шығарыңдар.
Берілген өлшем бірлік бойынша (1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 - сантиметр) жəне L ұзындығы бойынша кесінді ұзындығын метрмен өрнектеңдер.
0-9 дейінгі енгізілген санға сəйкес оның ағылшынша атауын шығаратын программа құрыңдар.
х,у оң нақты сандар берілген. Оларға орындалатын арифметикалық амалдар былайша нөмірленген: 1-қосу, 2-азайту, 3-көбейту, 4-бөлу. Берілген нөмірге байланысты сəйкес амалды орындайтын программа жазыңдар.
Қаладағы мектеп нөміріне байланысты ол орналасқан аудан атауын экранға шығаратын программа құрыңдар.
Берілген факультет нөмірі бойынша факультет атауын шығаратын программа құрыңдар.
Əдістемелік нұсқау: Берілген есептің қойылысын талдап, С/C++ тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып, тестілеңдер.
№4.СОБӨЖ
Тақырыбы: С/C++ тіліндегі таңдау командасы.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
1.Таңдау командасы.
2.Таңдау командасын қолданып программалау.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер : 8 [193-254]
№4. СӨЖ
Тақырыбы: С/C++ тіліндегі таңдау командасы.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
1.Таңдау командасы.
2.Таңдау командасын қолданып программалау.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер : 8 [193-254]
Бесінші апта
№ 9, 10 практикалық сабақтың тақырыбы: Циклдік операторлар.
Тапсырма: С/C++ программалау тілінде параметрлі, əзір циклін қолданып программалар құрыңдар.
1-ден N-ге дейiнгi сандардың қосындысын есептейтiн программа құрыңдар. N-нiң мәнi пернетақтадан енгiзiледi.
1-ден N-ге дейiнгi сандардың көбейтiндiсiн есептейтiн программа құрыңдар. N-нiң мәнi пернетақтадан енгiзiледi.
Пернетақтадан N сан енгiзiледi. Енгiзiлген сандардың iшiндегi терiс, оң сандардың және нөлдердiң санын анықтайтын программа құрыңдар.
Ұзындықтың 1-ден 20 дюймге дейiнгi мәндерiн сантиметрге (1 дюйм = 2,54 см) айналдыратын және оны экранға шығаратын программа құрыңдар.
Банктегi жылдық өсiмi 9 пайыздық (проценттiк) салымға S теңге салынды. N жылдан кейiн салынған ақша неше теңгеге жетедi?
Пернетақтадан 10 бүтін сан енгiзiп, солардың квадраты мен кубын анықтаңыз.
20-дан 50-ге дейiнгi натурал сандар берiлген. Олардың iшiндегi 3-ке бөлiнетiн, бiрақ 5-ке бөлiнбейтiн сандарды анықтаңдар.
35-тен 87-ге дейiнгi натурал сандар берiлген. Олардың iшiнде 7-ге бөлгенде, 1-ге, 2-ге немесе 5-ке тең қалдық қалатын сандарды табыңдар.
1-ден 50-ге дейiнгi натурал сандар берiлген. Олардың iшiндегi 5-ке немесе 7-ге бөлiнетiн сандардың қосындысын табыңдар.
Пернетақтадан 10 сан енгiзiңдер. Егер олардың iшiнде 15-тен асқаны бар болса, онда оларды 15-пен алмастырыңдар. Сандарды экранға шығарыңдар.
Пернетақтадан он терiс және оң сан енгiзiңдер. Барлық терiс сандарды олардың модульдерiмен алмастырып сандарды экранға басып шығарыңдар.
Екi орынды сандардың iшiндегi 4-ке бөлiнетiнiн, бiрақ 6-ға бөлiнбейтiнiн табыңдар.
13-ке қалдықсыз бөлінетін екi орынды тақ сандардың көбейтiндiсiн табыңдар.
100-ден 200-ге дейiнгi сандардың iшiндегi 17-ге қалдықсыз бөлінетін сандардың қосындысын табыңдар.
Пернетақтадан 10 сан енгiзiңдер. Егер сан 100-ден кем болса, онда осы санды және оның квадратын табыңдар.
1-ден бастап өздерiң енгiзген бүтiн n санына дейiнгi сандардың квадраттарының қосындысын есептейтiн программа құрыңдар.
200-ге дейінгі 5-ке бөлгенде 4 қалдық қалатын сандар нешеу екенін табу керек.
200-ге дейінгі бүтін сандардың 25-ке қалдықсыз бөлінетін сандары нешеу екенін анықтаңдар.
Әдістемелік нұсқау: Берілген есептің қойылысын талдап, Си тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып,тестілеңдер.
№5.СОБӨЖ
Тақырыбы: С/C++ тіліндегі цикл.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
1.Параметрлі цикл
2. Əзір циклі (while)
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 1 [165-234], 10 [112-144]
№5.СӨЖ
Тақырыбы: С/C++ тіліндегі цикл.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
1.Параметрлі цикл
2. Əзір циклі (while)
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Алтыншы апта
№11, 12 практикалық сабақтың тақырыбы: Бір өлшемді массив элементтерін түрлендіру.
Тапсырма: Төмендегі бір өлшемді массивті түрлендіру есептерінің Си тілінде программасын құрыңдар
Кез- келген бірөлшемді А(10) жиымының оң элементтерін екі есе кемітіңдер, ал теріс элементтері болса, онда оларды индекстерінің мəнімен ауыстырыңдар.
N кəсіпорынның бір жылғы электр энергиясын тұтынуы туралы дерек бар. Осы бойынша энергия тұтынудың арифметикалық ортасын анықтаңдар.
Екі массив берілген. Бірінші массивті элементтерінің өсуі, екіншісін кемуі бойынша реттеп алып, екі массивтің қосындысын табыңдар.
Массивтің 0-ге тең элементтерінің индексінен массив құрастырыңдар.
Массивтің көршілес жұп жəне тақ нөмірлі элементтерінің орнын алмастырыңдар.
N натурал сан берілген. Оның жұп элементтерінен массив құрастырыңдар.
7 сағ- тан 12 сағ-қа дейінгі уақыт аралығында ауа температурасы сағат сайын өлшенді. Осы аралықта температураның төмендегені мəлім. Температураның алғашқы теріс мəні қай сағатта болғанын анықтаңдар.
Жиымның көршілес жұп жəне тақ нөмірлі элементтерінің орнын алмастырыңдар.
Бірөлшемді А(8) жиымының 1- жəне соңғы, 2- жəне 7 т.б. элементтерінің орнын
алмастырыңдар.
Əдістемелік нұсқау: Берілген есептің қойылысын талдап, С/C++ тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып,тестілеңдер.
№6. СОБӨЖ.
Тақырыбы: С/C++ тіліндегі бір өлшемді массив.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
Массивті сипаттау форматы. Бір өлшемді массив элементтерін енгізу, шығару.
Массив элементтерінің арифм. орташасын, көбейтіндісін табу.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [568- 576]
№6. СӨЖ.
Тақырыбы: С/C++ тіліндегі бір өлшемді массив.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
Массивті сипаттау форматы. Бір өлшемді массив элементтерін енгізу, шығару.
Массив элементтерінің арифм. орташасын, көбейтіндісін табу.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [568- 576]
Жетінші апта
№13, 14 практикалық сабақтың тақырыбы: Бір өлшемді кездейсоқ сандар массивін түрлендіру.
Тапсырмаларды орындауға арналған нұсқаулар
А. Әрбір студент журналдағы өз нөміріне сәйкес (мұғалімнің көрсетуі бойынша) төрт есеп шығаруы тиіс.
В. Әр есептің блок-схемасы және соған сәйкес программасы құрылып, компьютерде сол программаның нәтижесін алу керек.
С. Екі блок-схема Word программасындағы Сурет салу-Автофигуралар-Блок-схемалар мүмкіндігімен сызылып көрсетілуі тиіс.
D. Берілген жиым элементтері мен нәтижелік элементтерді экранға шығарып, нәтижелерді жазып алу қажет немесе нәтижені бірден файлға жазуға тырысу керек.
Есептер
Кез келген сандардың бiрөлшемдi А(10) жиымындағы оң элементтердi екi есе кемiтiңдер, ал терiс элементтерi болса, онда оларды индекстерiнiң мәнiмен ауыстырыңдар.
Бiрөлшемдi А(10) жиымындағы терiс элементтердiң ең үлкенiн табыңдар.
Бiрөлшемдi А(20) жиымындағы –5-тен кiшi элементтердiң қосындысын және олардың жалпы санын, сонымен бiрге 5 санына еселiк болатын элементтердiң нөмiрлерiн анықтаңдар.
Бiрөлшемдi А(10) жиымындағы оң элементтердiң квадраттарының арифметикалық ортасын есептеңдер.
Бiрөлшемдi А(100) жиымындағы терiс элементтердiң бiрiншi тобындағы элементтердiң санын анықтаңдар.
Бiрөлшемдi жиым мәндерi берiлген диапазонда жататын элементтерiнiң нөмiрiн басып шығарыңдар.
Бiрөлшемдi А(10) жиымындағы оң элементтердiң iшiнде мәнi ең кiшiсiн және оның индексiн (нөмiрiн) табыңдар.
Бiрөлшемдi жиымда 2-элементтi бiрiншi орынға, 3-нi 2-шiмен және т.б. алмастырулар орындай отырып, 1-элементi соңғы орынға қойыңдар.
Берiлген оң сандар тiзбегiндегi қосындысы берiлген саннан асып кетпейтiн элементтердiң санын табыңдар.
Ұтыс билетiнiң нөмiрi алты орынды сан. Билет ―бақытты (алдыңғы және соңғы үш цифрының қосындысы өзара тең) немесе ―табысты (жұп орындарда тұрған цифрлардың қосындысы тақ орында тұрғандардың қосындысына тең) болатындығын анықтаңдар.
Оң және терiс сандар тiзбегiндегi бiрiншi терiс санға дейiнгi орналасқан сандар тiзбегiнiң өсу ретiмен орналасатындығын анықтаңдар.
N кәсiпорынның бiр жылғы электр энергиясын тұтынуы туралы дерек бар. Осы бойынша энергия тұтынудың арифметикалық ортасын және энергияны ең көп үнемдеген кәсiпорынды анықтаңдар.
14 аудан бойынша жанармай қорының мөлшерi белгiлi. Жанармаймен еңжақсы қамтылған үш ауданды анықтаңдар.
Берiлген А(14) жиымы бойынша мына шарттарды қанағаттандыратын В жиымын құрыңдар: В(1) = A(2); B(2) = A(2) * A(4); ... B(4) = A(2) * A(4) * ... * А(14)
Берiлген А(14) жиымы бойынша мына шарттарды қанағаттандыратын В жиымын құрыңдар: В(1) = А(1)/А(14); В(2) = А(2)/А(13), ... В(7) = А(7)/А(8)
А(14) жиымы берiлген. Жиым элементтерiнiң арифметикалық ортасын және ол мәнге еңжақын элементтiң нөмiрiн анықтаңдар.
А(14) жиымы берiлген. Екi жиым құрыңдар: оның бiрiншiсi индекстерi жұп сандар, ал екiншi жиым индекстерi тақ сан болатын элементтер болсын.
N элементтен тұратын бiрөлшемдi жиым берiлген. Әрбiр жолында L элемент болатын екiөлшемдi жиым құрастырыңдар.
А(10,10) жиымы берiлген. Бас диагональдағы ең кiшi элемент пен қосымша диагональдағы ең үлкен элементтiң орындарын ауыстырыңдар.
А(10,10) жиымы берiлген. Бас диагональдағы ең үлкен элементi бар жолды нөмiрi берiлген жолмен алмастырыңдар.
А(17) жиымы берiлген. 7-ден үлкен барлық элементтердi берiлген жиымның ең үлкен элементiмен ауыстырыңдар.
А(16) жиымы берiлген. Алғашқы оң элементке дейiнгi терiс элементтердiң санын анықтаңдар.
А(18) жиымы берiлген. 2-ден кiшi барлық элементтердi 3 санымен ауыстырыңдар.
А(17) жиымы берiлген. 0-ден үлкен барлық элементтердi 5-ке, ал қалғандарын 0-ге ауыстырыңдар.
А(14) жиымы берiлген. А жиымының барлық тақ элементтерi индекс нөмiрлерiмен ауыстырылатын В жиымын құрыңдар.
А(34) жиымы берiлген. Тақ нөмірлі индекстерде тұрған элементтердiң ең үлкенiн анықтаңдар.
А(N) жиымы берiлген. Алғашқы ең кiшi (минимал) элементтiң орнын (индексiн) анықтаңдар.
А(N) жиымы берiлген. Соңғы ең кiшi элементтiң орнын анықтаңдар.
А(N) жиымы берiлген. Соңғы ең үлкен (максимал) элементтiң орнын анықтаңдар.
А(N) жиымы берiлген. Алғашқы ең үлкен элементтiң орнын анықтаңдар.
Əдістемелік нұсқау: Берілген есептің қойылысын талдап, С/C++ тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып,тестілеңдер.
№7. СОБӨЖ.
Тақырыбы: Бір өлшемді кездейсоқ сандар массивін түрлендіру.
Тапсырма: Өткен материалдарды қайталау мақсатында коллоквиум сұрақтарына жауап беру.
Əдістемелік нұсқау: Өткен материалдарды қайталау, коллоквиум сұрақтарына дайындалу
Әдебиеттер: 1[ 485- 497]
№7. СӨЖ.
Тақырыбы: Бір өлшемді кездейсоқ сандар массивін түрлендіру.
Тапсырма: Өткен материалдарды қайталау мақсатында коллоквиум сұрақтарына жауап беру.
Əдістемелік нұсқау: Өткен материалдарды қайталау, коллоквиум сұрақтарына дайындалу
Әдебиеттер: 1[ 485- 497]
Сегізінші апта
№ 15, 16 практикалық сабақтың тақырыбы: Екі өлшемді массивті программалау
Матрицаның барлық элементтерін өңдейтін алгоритмдер
2-мысал. Нақты сандардан тұратын a4,6 матрицасы берілген. Мынадай z=p1/|p2| өрнекті есептеу керек, мұндағы P1 и P2 – сәйкесінше алынған матрицаның оң және теріс элементтерінің көбейтіндісі.
/* a[4][6] матрицасы берiлген. z=p1/|p2| есептеу керек, p1 және p2 – матрицаның оң және терiс элементтерiнiң көбейтiндiсi */
#include
#include
#include
void line()
{printf("------------------------------\n"); return;}
main ()
{static int a[4][6]={{5,-11,4,-2,5,6},{3,3,-12,-5,7,8},{2,3,-3,14,-9,-3},{-9,3,-6,14,9,-3}};
int i,j; float p1, p2, z;
printf("Берiлген матрица :\n"); line();
for (i=0; i<4; i++)
{for (j=0; j<6; j ++)
printf(" %3i ", a[i][j]);printf("\n");}
line();
/* Матрицаны өңдеу */
p1 = 1;p2 = 1;
for (i=0; i<4; i++)
for (j=0; j<6; j ++)
{if (a[i][j]>0) p1 = p1*a[i][j];
if (a[i][j]<0) p2 = p2*a[i][j];}
z = p1/abs(p2);
printf(" z = %f\n",z); line();getch();}
Матрица мынадай түрде беріледі:
А(0,0)
|
A(0,1)
|
A(0,2)
|
A(0,3) ...
|
A(0, j)
|
…
|
A(0,n-1)
|
A(1, 0)
|
A(1,1)
|
A(1, 2)
|
A(1, 3) ...
|
A(1, j)
|
…
|
A(1, n-1)
|
A(2, 0)
|
A(2, 1)
|
A(2,2)
|
A(2, 3) ...
|
A(2, j)
|
…
|
A(2, n-1)
|
A(3, 0)
|
A(3, 1
|
A(3, 2
|
A(3, 3...
|
A(3, j)
|
…
|
A(3, n-1)
|
…
|
…
|
…
|
…
|
…
|
A(i, j)
|
… …
|
A(n-2, 0)
|
A(n-2, 1)
|
A(n-2, 2)
|
A(n-2, 3) ...
|
A(n-2, j)
|
… A(n-2, n)
|
A(n-1, 0)
|
A(n-1, 1)
|
A(n-1, 2)
|
A(n-1, 3) ...
|
A(n-1, j)
|
… A(n-1, n-1)
|
Бас диагональ элементтері белгісі: i = j
Бас диагональдан жоғары тұрған элементтері белгісі: i < j
Бас диагональдан төмен тұрған элементтері белгісі: i > j
Қосалқы диагональ элементтері белгісі: i+j = n-1
Қосалқы диагональдан жоғары элементтер белгісі: i+j < n-1
Қосалқы диагональдан төмен элементтер белгісі: j+j > n-1
3-мысал. Бүтін сандардан тұратын квадрат b5,5 матрицасы берілген. Оның бас диагоналының сол жағында және оң жағында орналасқан нөлге тең элементтері санын анықтап, солардың айырмасының модулін табу керек.
Мынадай белгілеулер енгізейік:
L1 – бас диагональдың сол жағында (төменінде) орналасқан элементтер саны;
L2 – бас диагональдың оң жағында (жоғарысында) орналасқан элементтер саны;
L= |L1-L2| – солардың айырмасы модулі.
#include
#include
#include
void line()
{printf("-------------------------\n"); return;}
main ()
{static int b[5][5]={{5,0,0,0,0}, {0,3,12,0,0}, {0,33,13,14,0}, {0,23,0,14,0}, {35,0,13,14,9},};
int i,j;
int L1,L2,L;
printf("Берiлген матрица :\n"); line();
for (i=0; i<5; i++)
{for (j=0; j<5; j ++)
printf(" %3i ", b[i][j]);
printf("\n");}line();
L1 = L2 = 0;
for (i=0; i<5; i++)
for (j=0; j<5; j ++)
if (b[i][j]==0){if (i>j) L1 = L1+1;
if (i
L= abs(L1 - L2);
printf(" L = %i ", L);
getch();}
Екінші типтегі есептер алгоритмдері
4-мысал. Бүтін сандардан тұратын a3,6 матрицасы жолдарының алғашқы элементін осы жолдың минимальды элементімен алмастыру керек. Нәтижелік a3,6 матрицасы элементтерін экранға шығару қажет.
/* a[3][6] матрицасы жолдарының алғашкы элементiн осы жолдың минимальды элементiмен алмастыру керек. Натижелiк Х матрицасы элементтерiн экранға шығару кажет.*/
#include
#include
#include
void line()
{printf("------------------------------\n");
return;}
main ( )
{ static int a[3][6]={ {5,-11,4,-2,5,6 }, {2,3,-3,14,-9,-3}, {-9,3,-6,-14,9,-3}};
int i,j,jmin,min;
printf("Берiлген матрица :\n");line(); for (i=0; i<3; i++)
{for (j=0; j<6; j ++)
printf(" %3i ", a[i][j]);
printf("\n");}
line();
for (i=0; i<3; i++)
{ min=+1E6;
for (j=0; j<6; j ++)
if (a[i][j]
{min=a[i][j];jmin=j;}
a[i][jmin]=a[i][0];
a[i][0]=min;}
printf("Өңделген матрица :\n");line();
for (i=0; i<3; i++)
{for (j=0; j<6; j ++)
printf(" %3i ", a[i][j]);
printf("\n");} line(); getch();}
5-мысал. Бүтін сандардан тұратын a3,4 матрицасының әрбір бағаналарының арифметикалық орташа мәнін анықтап, оларды бір өлшемді s4 жиымы ретінде бейнелеу керек.
/* a[3][4] матрицасының әрбiр бағаналарының арифметикалық орташа мәнiн анықтап,оларды бiр өлшемдi s[4] жиымы ретiнде бейнелеу керек. */
//әрбір бағана қосындысы және солардың орташа мәні
#include
#include
main ()
{ static int a[3][4]={ {5,11,4,2}, {3,3,12,5}, {2,3,3,14}};
int i,j;
float s[4];
printf("Берiлген матрица :\n");
printf("----------------------\n");
for (i=0; i<3; i++)
{for (j=0; j<4; j ++)
printf(" %3i ", a[i][j]);
printf("\n");}
/* матрицаны өңдеу */
printf("----------------------\n");
printf("");
for (j=0; j<4; j++)
{ s[j]=0;
for (i=0; i<3; i ++) s[j]+=a[i][j]; printf(" %4.2f",s[j]/3);}
printf("\n----------------------");
getch();}
Бұл программада s[j] жиымының әрбір элементін есептеуде қабаттасқан екі цикл қолданылған, онда j индексі сыртқы цикл параметрі, ал i индексі – ішкі цикл параметрі. Осы тәсіл матрица элементтерін бағаналар бойынша өңдеу ісін жүзеге асырады.
6-мысал. Берілген жиымның әрбір жолындағы элементтері қосындыларын және сол қосындылардың орташа мәнін анықтау керек. Әр жол қосындысы және солардың арифметикалық ортасы
#include #include main ()
{ static int a[3][4]= {{5,3,4,2},{3,3,4,5},{2,3,3,4}};
int i,j,s=0;
float c=0;
for (i=0; i<3; i++)
{for (j=0; j<4; j ++) s+=a[i][j]; printf("%i-жол косындысы:%i\n",i+1,s); c+=s;}
printf("--------------------"); printf("\n арифм.ортасы %5/2f", c/4) ; }
7-мысал. Берілген жиымның әрбір бағанадағы элементтері қосындыларын және сол қосындылардың орташа мәнін анықтау керек.
әрбір бағана қосындылары мен солардың орташа мәнін анықтау
#include #include main ()
{static int a[3][4]={{5,11,4,2},{3,3,12,5},{2,3,3,14}};
int i,j,s; float c;
printf("Берiлген матрица :\n"); printf("----------------------\n"); for (i=0; i<3; i++)
{for (j=0; j<4; j ++)
printf(" %3i ", a[i][j]);printf("\n");}
/* Матрицаны өңдеу */
printf("----------------------\n");
printf("s=");
for (j=0; j<4; j++)
{ s=0;
for (i=0; i<3; i ++) s+=a[i][j];
printf("%3i ",s); // қосынды s
c+=s;}
printf("\n----------------------"); printf("\n арифм. ортасы %5.2f",c/4); getch();}
8-мысал. Берілген a4,4 жиымының бас диагоналындағы элементтерді нөлге, ал қосалқы диагоналындағы элементтерді – бірге теңестіру программасы.
#include
#include
#include
main()
{int a[4][4]={{6,8,9,2},{5,3,4,2},{3,3,4,5},{2,3,3,4}};
int i,j;
printf("Берілген матрица :\n"); for (i=0; i<4; ++)
{for (j=0; j<4; j ++)
printf(" %2i ", a[i][j]);printf("\n");}
/* Матрицаны өңдеу */
for (i=0; i<4; i++) a[i][i]=0;
for (i=0; i<4; i++) for (j=0; j<4; j ++)
if (i+j==3) a[i][j]=1;
/* Өңделген матрица элементтерін шығару */ printf("Нәтижелік матрица :\n");
for (i=0; i<4; i++)
{for (j=0; j<4; j ++)
printf(" %2i ", a[i][j]); printf("\n");} getch();}
9-мысал. Берілген a3,3 жиымының бас диагоналынан төмен орналасқан элементтер қосындысын анықтау программасы.
#include
#include
main ()
{static int a[3][3] = {{0,1,2},{3,4,5},{6,7,8}};
int i,j,r,s;
printf("Енгiзiлген а[3][3] жиым элементтерi:\n"); for (i=0; i<3; i++)
{for (j=0; j<3; j++)
printf(" %2i",a[i][j]);printf("\n");}
/* бас диагоналдан төмен орналасқан элементтер қосындысын анықтау */
s=0;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
if (j
printf("\ns=%i",s);
getch();}
10-мысал. Берілген a3,3 жиымының әрбір жолындағы элементтерді өсуі бойынша реттеп орналастыру программасы.
#include
#include
#include
main ()
{ static int a[3][3] ={{8,7,6},{5,4,3},{2,1,0}};
int i,j,r,s,n=3,amin,m,k;
printf("Берілген матрица:\n"); for (i=0; i<3; i++)
{for (j=0; j<3; j++)
printf(" %2i",a[i][j]);
printf("\n");}
for (i=0; i
{//мин тауып алмастыру
for (k=0; k
{ amin=a[i][k];m=k;
for (j=k+1; j
if (a[i][j] < amin) {amin=a[i][j]; m = j;}
a[i][m]=a[i][k]; a[i][k]=amin;}}
printf("\nНәтижелік матрица:\n"); for (i=0; i<3; i++)
{for (j=0; j<3; j++)
printf(" %2i",a[i][j]);
printf("\n");}
getch();
11-мысал. Берілген a3,3 жиымының әрбір бағанасындағы элементтерді өсуі бойынша реттеп орналастыру программасы.
#include
#include
#include
main ()
{ static int a[3][3]= {{8,7,6},{5,4,3},{2,1,0}};
int i,j,r,s,n=3;
int amin; int m,k; printf("Берілген матрица:\n"); for (i=0; i<3; i++)
{for (j=0; j<3; j++)
printf(" %2i",a[i][j]);
printf("\n");}
for (j=0; j
{for (k=0; k
{ amin=a[k][j];m=k; for (i=k+1; i
if (a[i][j] < amin) {amin=a[i][j]; m = i;}
a[m][j]=a[k][j]; a[k][j]=amin;}}
printf("\nСұрыпталған матрица элементтері:\n"); for (i=0; i<3; i++)
{for (j=0; j<3; j++)
printf(" %2i",a[i][j]);
printf("\n");}getch();}
Екі өлшемді жиымдармен жұмыс істеу кезінде нұсқауыштарды қолдану
A3,2 жиым берілген болсын. Олар бүтін сандар, яғни
int a[3][2];
int *pri;
pri = a; // бұл pri=a[0][0] деген сөз
a – жиымның аты немесе a[0][0] элементінің адресі a=&a[0][0];
рri нұсқауышына 1-ді қоссақ, pri+1 деген нұсқауыш a[0][1] элементіне сілтейді. Бұл жиымды қарастырғанда, келесі теңдеулер дұрыс болып табылады:
pri == &a[0][0];
pri+1== &a[0][1];
pri+2== &a[1][0];
pri+3== &a[1][1];
pri+4== &a[2][0];
pri+5== &a[2][1];
Екі өлшемді жиым бір өлшемді жиымдардан құрастырылған жиым ретінде қарастырылуы мүмкін. Яғни берілген екі өлшемді жиым үш жолдан тұрады, ал әрбір жол екі элементтен тұратын жиым болып табылады.
Бірінші жол аты – a[0],
екінші жол аты – a[1],
үшінші жол аты – a[2].
Жиымның аты берілген жиымның нұсқауышы болып табылады, яғни ол жиымның 1-элементіне сілтейді.
Екі өлшемді жиымның осы қасиеті бір өлшемді жиымға арналған функцияны екі өлшемді жиыммен жұмыс істеуге мүмкіндік береді.
12-мысал. Төмендегі b[3][4] матрицасы жолдарының арифметикалық ортасын табатын программада функция қолданылған.
/* b[3][4] матрицасы жолдарының қосындысы */
#include
#include
float f1(int x[], int n)
{ int k; float s;
for (k=0,s=0;k
s+=x[k];
return(s/n);}
main ()
{ int i,b[3][4]={ {6,4,3,3}, {7,5,3,3}, {8,4,2,6}};
for (i=0;i<3;i++)
printf("%d жолының орташа мәні: %f\n", i,f1(b[i],4));
getch();}
Тапсырмалар
Екiөлшемдi А(10,10) жиымда әрбiр жол үшiн оң элементтердiң қосындысын есептеп шығарыңдар.
Екiөлшемдi А(10,10) жиымындағы оң элементтердiң санын есептеп шығарыңдар.
Екiөлшемдi А(10,10) жиымындағы ең үлкен элементтi анықтаңдар.
Екiөлшемдi А(10,10) жиымы берiлген. А жиымының әрбiр жолындағы элементтердiң көбейтiндiсiне тең болатын бiрөлшемдi В жиымын алыңдар.
Екiөлшемдi А(10,10) жиымы берiлген. А жиымының әрбiр жолындағы ең үлкен элементтiң мәндерiне тең болатын бiрөлшемдi В жиымын алыңдар.
Екiөлшемдi А(10,10) жиымы берiлген. А жиымының әрбiр жолындағы терiс элементтiң мәндерiне тең болатын бiрөлшемдi В жиымын алыңдар.
Екiөлшемдi А(10,10) жиымында терiс элементтерi бар жолдардың санын есептеп шығарыңдар.
Екiөлшемдi жиым жолдарындағы ең үлкен элементтердiң қосындысын есептеп шығарыңдар.
Екiөлшемдi жиым әрбiр бағандағы (тiк жолдағы) элементтердiң қосындысын есептеп шығарыңдар.
Екiөлшемдi жиымның әрбiр жолындағы терiс сандардың санын, қосындысын және арифметикалық ортасын есептеп шығарыңдар.
Екiөлшемдi А(4,4) жиымындағы индекстерiнiң қосындысы 4-ке тең болатын элементтерiнiң қосындысын есептеп шығарыңдар.
Екiөлшемдi А(4,7) жиымындағы оң элементтердiң арифметикалық ортасын және нөлге тең элементтердiң санын есептеп шығарыңдар.
Екiөлшемдi А(10,10) жиымының бас диагоналi бойындағы элементтердiң ең үлкенiн табыңдар.
Екiөлшемдi А(10,10) жиымының қосымша диагоналi бойындағы ең үлкен элементтi табыңдар.
Екiөлшемдi А(10,10) жиымының қосымша диагоналi бойындағы ең үлкен элементтi табыңдар.
Екiөлшемдi А(4,7) жиымының әрбiр жолындағы берiлген диапазонда жататын элементтердiң арифметикалық ортасын есептеп шығарыңдар.
Екiөлшемдi А(10,10) жиымында элементтердiң арифметикалық ортасы жиымның барлық элементтерiнiң арифметикалық ортасынан кем болатын бағанның нөмiрлерiн анықтаңдар.
Екiөлшемдi А(10,10) жиымында 3- және 1-жолдардың орындарын ауыстырыңдар.
Екiөлшемдi А(7,7) жиымында бас диагональдағы элементтердi әрбiр жолдың ең үлкен мәнiмен алмастырыңдар.
Екiөлшемдi А(10,10) жиымында бас диагональдан жоғарғы және төмен орналасқан элементтердiң қосындысын есептеп шығарыңдар.
Екiөлшемдi жиымда берiлген жолдың ең үлкен элементiнiң мәнiн және нөмiрiн анықтаңдар.
Екiөлшемдi жиымда әр баған үшiн берiлген бағанның мәнiнен кiшi болатын элементтердiң арифметикалық ортасын есептеп шығарыңдар.
Бүтiн сандардан құралған 10Х10 матрицасының ең үлкен элементiнiң жолы мен баған нөмiрiн шығарып беретiн программа жазыңдар.
А(5,5) жиымы және k саны берiлген. Әрбiр жолдың элементтерiн осы жолдағы бас диагональда орналасқан диагоналдық элементке бөлiңдер.
А(10,10) жиымы берiлген. Осы жиымның бас диагоналiнiң элементтерiнен тұратын бiрөлшемдi жиым құрыңдар .
А(10,10) жиымы берiлген. k- және 1-жолдардың орындарын ауыстырыңдар.
А(10,10) жиымы берiлген. Одан бiрөлшемдi жиым құрастырыңдар.
Бүтiн санды х [0...5, 0...4] жиымы берiлген. Оның 5-тен кiшi барлық элементтерiн санымен ауыстырыңдар.
Бүтiн санды В [0...4, 0...3] жиымы берiлген. Оның элементтерiн олардың квадраттарымен ауыстырыңдар.
Нақты сандар жиымы А[0...5, 0...3] берiлген. Оның терiс элементтерiнiң индекстерiн басып шығарыңдар.
Екiөлшемдi бүтiн санды А[0..10, 0..7] жиымын құрыңдар және оның екi тақ санды индекстерiнiң барлық элементтерiнiң қосындысын табыңдар.
Бүтiн санды А [0..10, 0..7] жиымы берiлген. Жиымның 5-ке қалдықсыз бөлінетін элементтерiнiң қосындысын табыңдар.
3х3 матрицаның бүтiн сандық элементтерiн пернетақтадан енгiзiңдер және әрбiр баған элементтерiнiң қосындысын есептеп шығарыңдар.
Бүтiн санды В[0..5,0..5] жиымы берiлген. Оның диагональдарынан сол және оң жақта орналасқан элементтерiн анықтаңдар.
Бүтiн санды В [0..5, 0..5] жиымы берiлген. Диагональдың оң жақтағы элементтерiнiң қосындысын, сол жақтағы элементтерiнiң көбейтiндiсiн табыңдар.
Бүтiн санды В [0..5, 0..5] жиымы берiлген. Жиымның ең үлкен элементiн табыңдар және оның диагоналының қай жағында орналасқаны туралы хабарды экранға шығарыңдар.
Бүтiн санды В [0..5, 0..5] жиымы берiлген. Жиымның ең кiшi элементiн табыңдар және оның диагональдың қай жағында орналасқаны туралы хабарды экранға шығарыңдар.
Бүтiн санды В [0..5,0..5] жиымы берiлген. Жиым диагоналiнiң сол жағынан жоғары орналасқан элементтердiң қосындысын табыңдар.
Бүтiн санды В [0..5,0..5] жиымы берiлген. Жиым диагоналiнiң сол жағынан төмен орналасқан элементтердiң көбейтiндiсiн есептеп шығарыңдар.
Бүтiн санды В [0..5,0..5] жиымы берiлген. Жиым диагоналiнiң сол жағынан төмен орналасқан терiс таңбалы элементтерiнiң санын табыңдар.
Бүтiн санды В[0..5,0..5] жиымы берiлген. Жиым диагоналiнiң сол жағынан жоғары орналасқан оң таңбалы элементтерiнiң санын табыңдар.
Бес цехтың әрқайсысының 4 бөлiмшесiндегi барлық шикiзат туралы мәлiмет кестесi берiлген. Шикiзаты ең аз цехтың нөмiрiн анықтаңдар.
А[0..3, 0..15] жиымы берiлген. Оның iшiнде өзара тең екi элементтiң индекстерiн басып шығарыңдар.
а1, а2, а3 сандары берiлген. Элементтерi В[i,j] = аi – 3aj болатын бүтiн санды В[0..3, 0..3] жиымын анықтаңдар.
Нақты а1, а2, ... , а10, b1, b2, ... , b20 сандары берiлген. Элементтерi аi,j = i +2j болатын бүтiн санды А [0..10, 0..12] жиымын алыңдар.
Өлшемдерi 5*5 матрицаның әрбiр элементiнiң мәнi қиылатын жол мен бағана нөмiрiнiң қосындысына тең болатын элементтерiнiң қосындысын есептеңдер.
Нақты [0..7, 0...7] жиымын алыңдар, оның 1-жолы а1j = 2j + 3 формуласымен, 2-жолы а2j = j + 3/(2+j) формуласымен берiлiп, содан кейiнгi әрбiр жол алдыңғы екi жолдың қосындысына тең болатын болсын.
Натурал п саны берiлген. Егер аi,j= sin(i+j/2) болса, A[0..п, 0..п] жиымында қанша оң элемент болатындығын анықтаңдар.
Бүтiн санды А[0..4, 0..5] жиымы берiлген. Әрбiр бағанның арифметикалық ортасын табыңдар.
Әдістемелік нұсқау: Берілген есептің қойылысын талдап, Си тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып,тестілеңдер.
№8. СОБӨЖ.
Тақырыбы: Екі өлшемді массив.
Тапсырма: Сұрақтарға жауап беру.
Матрицаны программада сипаттау, енгізу, шығару.
Матрица элементтерін инициализациялау.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [641-649]
№8. СӨЖ.
Тақырыбы: Екі өлшемді массив.
Тапсырма: Сұрақтарға жауап беру.
Матрицаны программада сипаттау, енгізу, шығару.
Матрица элементтерін инициализациялау.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [641-649]
Тоғызыншы апта
1. Жолды енгізу және шығару функциялары
2. Strlen()- жол ұзындығын, strcat()-жолды біріктіру және strcpy() –жолды көшіру функциялары.
Символдық айнымалыларға әрекеттер жасау үшін Си тілінде string.h тақырыптық файлда анықталған функциялар қолданылады. Символдық айнымалылар былайша сипатталады: Char айнымалылар тізімі ;
символдық жол символдық массив түрінде сипатталады.
String.h тақырыптық файлда төмендегідей функциялар анықталған.
1.strlen ( ) – функциясы жолдың ұзындығы табу үшін қолданылады, функция нәтижесінде бүтін сан шығады.
Жалпы жазылуы: strlen (жолдық айнымалы).
2. strcat ( ) – функциясы 2 жолды біріктіру үшін қолданылады.
Жалпы жазылуы: strcat( 1 –жол , 2- жол );
функция 2- жолды 1- жолға біріктіреді.
3. strcpy ( ) функциясы жолдық айнымалыны басқа жолдық айнымалыға түгелдей көшіру үшін қолданылады.
Жолдардың ұзындығын анықтау. Өзімізге белгілідей С тіліндегі смволдық жолдардың жолдары тізбектесіп келеді,ол жерде басы сілтеуіштің символдық типке сілтейді,ал аяғы 0-дік символды көрсетеді.Кей жерде жолдың ұзындығын, ондағы символдар санын міндетті түрде білу қажет.
Бұл ұзындықты STRLEN () кітапханалық функциялардың көмегімен анықтауға болады.Оның прототипі :
STRING .Һ файлында: size t strlen(char * str).
Size t бұл қандай тип? Ол string.h файлында unsigned түрінде анықталған, онда strlen( ) функциясы таңбасыз бүтін сан қайтарады. Unsigned типіне сәйкес келетіндігін естен шығармаған жөн. Strlen функциясына берілген аргумент- бұл жолдың ұзындығын анықтайтын жолға сілтеуіш.
Функция Str басынан 0-дік символға дейінгі символдарға санын қайтарады. Бұл функцияның қолданылуы 1-ші листингте көрсетілген.
1.2 Жолдарды көшіру
С кітапханасында жолдарды көшірудің екі функциясы бар. Спецификалық техниканың әсерінен жолдармен жұмысты С-да бір жолды екіншісіне оңай меншіктеуге болмайды, бірақ басқа бағдарламалау тілдерінде бұлай жасауға жол берілген. Міндетті түрде орындалушы жолдың өзі алып отырған орынан басқа орынға көшіруді орындау қажет, оның ішінде көшірудің жолы орналасқан жерге жолдарды көшіру функциялары strcpy( ) және strncpy() дан тұрады. Екеуі де string.h тақырып файлында хабарланған, оны міндетті түрде олардың қолданылуы үшін қосу қажет.
1.2.1 Strcpy( ) функциясы
Strcpy( ) кітапханалық функциясы берілген жадыға бүтін бір жолды көшіреді. Оның протипі: char * strcpy(char* destinution, const char* source);
Анықтама бойынша, strcpy( ) функциясы жолдарды көшіруді орындайды және ол source адресінде орындалады (оған қоса аяқтаушы 0-дік символмен)б сілтеуіште destination адресінен басталады. Strcpy( ) функциясын шақырмайтын бұрын жаңа жол үшін шартты түрде жадыны ерекшелеу керек. Жаңа сілтенген адрес бойынша жеткілікті жады бар немесе жоқ екендігін функция өздігінен тексере алмайды. Егер жады реттелуі орындалмаса, онда функция strlen(source) жаңа ақпаратқа әсер етеді. Оның ішінде destination сілтенген адрестен бастайды. Мұндай жағдайда күтпеген қателіктер шығуы мүмкін. Strcpy( ) функциясының қолданылуы 2-ші листингте айқын көрсетілген.
1.2.2 Strncpy( ) функциясы
Strncpy( ) функциясы strcpy( ) функциясымен белгіленуі жөнінен үйлесімді.Бір еске сақтар жағдай бар, оның көмегімен белгілі бір мөлшерде символдар көшіріледі. Ол төмендегідей прототипке ие:
Char*strncpy(char*destination, const char* source, size_ t n);
Source және destination аргументтері бастапқы және соңғы жолдарға сілтейді. Функция destination-дағы source аргументтерінен n-нен астам символдарды көшіреді. Егер source жолы n символдан қысқа болса, онда destination да n-ге тең болуы,көшірілуі үшін, оған жеткілікті мөлшерде нөлдік символдар қосылады. Егер source жолы n символынан ұзынырақ болса, онда destination-ға аяқталушы нөлдік символ қосылмайды. Функция destination сілтеуішін кері қайтарады. Strncpy ( ) функциясының қолданылуы 3-ші листингте көрсетілген.
1.2.3 Strdup( ) функциясы
Бізге білген жөн, тағы бір жолдарды көшіру функциясы бар. Оның аты- strdup( ). Берілгендері бойынша strcpy( ) функциясына ұқсас, бірақ буфер үшін жадының реттелуін орындайды. Нақты алғанда, ол тура соны жасайды.Біз оны өз күшімізбен 2-ші листингте ma11oc( ) –ты шақыра отырып, жадыны реттеуге мәжбүр болдық, содан кейін strcpy( ) жолды көшіру үшін. Білген жөн, Strdup( ) функциясы ANSI стандартында анықталмаған. Ол компиляторлардың кітапханасына кіреді. Мысалы, Microsoft Borland және Symаntec C,бірақ басқа да компиляторлар оны жүзеге асыра алады. Strdup( ) келесідей типке ие: Char*strdup(char*source);
Source аргументі жолдарды көшіруші сілтеуішті көрсетеді. Функция жолға сілтеуішті қайтарады, онда орындалған буферге көшіру ma11oc() немесе NULL көмегімен құру, оның ішінде жадының реттелуі сәтті болмаған жағдайда ғана. Strdup() функциясының қолданылуы source 4-ші листингте көрсетілген.
1.3 Конкатенация
(жолдардың тіркесуі немесе айқасуы)
Егер сіз әлі “конкатенация” терминін кездестірмеген болсаңыз (ол “тіркесу” немесе “айқасу” мағынасын береді), онда сізде бұл не?, ол заңды ма?-деген сұрақ тууы мүмкін. Бұған бұлай жауап береміз: конкатенация кезінде бір жол екінші жолдың соңына жай ғана жалғанады,бұл үшін сіздерді құрдымға сүйреп кетпейді. С стандартты кітапханасында 2 жолды айқастырушы функциялар бар. Олар strcat ( ) немесе strncat ( ). Олармен жұмыс істеу үшін міндетті түрде string.h тақырыптық файлы қажет.
1.3.1 Strcat( ) функциясы
Strcat ( ) функциясы төмендегідей прототипке ие:
Char *strcat (char*str1,const char *str2)
Бұл функция str1 жолының соңына str2 жолының көшірмесін сыйғызады және жаңа алған жолдың соңына апарып аяқтаушы нөлдік символды қояды. Алдын-ала міндетті түрде екі жолдың тіркесу немесе айқасуының шешімін сақтау үшін, str1 жолында жеткілікті орын болуын қамтамасыз етіңіз. Strcat () функциясы str1-ге сілтеуішті кері қайтарады. Оның қолданылуы төмендегі 5-ші листингіде бейнеленген.
1.3.2 Strncat( ) функциясы
Strncat( ) кітапханалық функциясы сонымен қатар, жолдардың конкатенациясын орындайды, бірақ шығушы жолдан белгіленген жолдың соңына тура қанша символ қосу керек екендігін сілтеу керек. Ол төмендегідей прототипке ие:
Char *strncat(char*str1, const char*str2,size_ t n);
Егер str2 n –нен астам символға ие болса, онда str1-ге тек алғашқы n символы қосылады. Әр осындай жағдайда жолға нөлдік аяқтаушы символ автоматты түрде қосылып отырады. Міндетті түрде str1-ге жеткілікті жадының үлестірілуін қамтамасыз еткен жөн, себебі оның ішіне нәтиже сыюы қажет. Функция str1-ге сілтеуішті кері қайтарады. 6-шы листингте Strncat( ) функциясының көмегімен тура 5-ші листингтегідей нәтижеге қол жетеді.
1.4 Жолдарды салыстыру
Жолдарды өзара тең немесе тең емес екендігін анықтау үшін салыстырады. Егер жолдар өзара тең болмаса, онда олардың біреуі “ұзынырақ”, ал екіншісі “қысқарақ” болады. “Қысқарақ” және “ұзынырақ” анықтамалары ASCII символдардың кодтарына сүйенеді. Кодтардың кезектесуі тура алфавиттегі реттік бойынша, бірақ бір өзгеше қасиет бар- ол жоғарғы регистрдің әріпиері, төменгі регистрдің әріптерінен “қысқарақ”. Мұның себебі, үлкен А-дан Z-ке дейінгі әріптер ASCII 65-тен 90-ға дейінгі кодтармен әкелінеді. Ал сол кездегі а-дан z-ке дейінгі әріптер 91-ден 122-ге дейінгі кодтармен жеткізіледі. Осы жағдаймен, С функциясының көмегімен “ZEBRA” сөзін салыстыру кезінде “apple” сөзінен кіші болып шығады. ANSI C кітапханасы екі жолды салыстыру функциялары үшін екі бүтін жолдарды салыстыру және белгілі бір ұзындыққа ие фрагменттерін салыстыру қарасырылады.
1.4.1 Екі бүтін жолды салыстыру
Strcmp( ) функциясы екі жолды символ бойынша салыстыруға арналған. Оның прототипі: Int strcmp(const char*str1,const char*str2)
Str1 және str2 аргументтері салыстырылып жатқан жолдарға сілтейді. Кері қайтарылушы функцияның мағынасы 1-ші кестеде берілген.Назар аударыңыз, екі жолдық аргумент те константалармен (тұрақтылармен) хабарланған. Себебі олардың біреуі функция ішінде өзгермейді. Strcmp( ) функцияның қолданылуы 7-ші листингте:
1-ші кесте:
Кері қайтарылатын мағына
|
Мағына
|
Болымсыз
|
Str1 |
0
|
Str1=str2
|
Болымды
|
Str1>str2
|
1.4.2 Жолдардың фрагментін салыстыру
Srtncmp ( ) кітапханалық функциясы бір жолдан екінші жолға берілген ұзындықтың фрагментін салыстырады. Ол төмендегідей прототипке ие:
Int strncmp(const char* str1,const char * str2,size_t n).
Бұл функция str1 жолымен бірге str2 жолынан n символды салыстырады. str1-дің соңына жетіп немесе барлық n символдар тамамдалғанша салыстыру жалғаса береді. Кері мағынасы және салыстыру әдісі тура strcmp() функциясындай. Жолдар регистрдің тіркеуімен салыстырады. Бұл функциясының қолданылуы 8-ші листингте көрсетілген.
1.4.3 Екі жолды регистрдің тіркеуінсіз салыстыру
Өкінішке орай, ANSI C стандартты кітапханасында регистрдің символдарының айырмашылығынсыз жолдарды салыстыру функциясы жоқ. Бірақ көп тараған С компиляторлары бұл мақсат үшін стандартты емес функцияларды көрсетеді. Мысалы, Symantec компилятор strcmp1( ) функциясын ұсынады, ол Microsoft кітапханасында бұл жағдайда_ stricmp () функциясы барады, ал Borland кітапханасында бірден екі функция strcmpi ( ) және stricmp( ) бар. Өзіңіздің компиляторыңыздың кітапханасында мұндай функциясының қасиеттерін анықтау үшін, оның документациясына қарайласыңыз. Smith және SMITH сияқты жолдарының функциясын шақыру кезінде тең болып шығады. Регистрдің тіркеуінсіз салыстыру функциялары қолданылуы үшін, 7-ші листингтегі 27-ші жолды өзгертіңіз және бағдарламаға қайта жіберіңіз.
1.5 Жолдар бойынша іздеу
С кітапханасы жолдар бойынша іздеуді орындайтын бірнеше функцияға ие. Басқаша сөзбен айтқанда, бұл функциялар бір жолдың екінші жолдың ішінде кездесетін, кездесе тұра қай жерде екенін анықтайды. Мұндай функциялар саны бар болғаны 6 және олардың барлығы string.h тақырыптық файлында хабарланған.
*strchr( )
*strrchr( )
*strcspn( )
*strspn( )
*strpbrk( )
*strstr( )
1.5.1 Strchr( ) функциясы
Strchr( ) функциясы берілген символдың берілген жолдағы алғашқы кірістерін табады. Оның прототипі:
Char*strchr(const char*str,int ch);
Strchr( ) функциясы ch символын таппайынша немесе жол нөлдік символмен аяқталмайынша, солдан оңға str жолында іздеуді орындайды. Егер ch символы табылмаса, функция сілтеуішті оған кері қайтарады. Сонымен strchr( ) функциясы символды атпқан кезде , ол символдың сілтеуішін (мекен жайын) кері қайтарады. Str жолдағы 1-ші символға сілтейтінін біле отырып, str-ді кері қайтарылған функциядан тартып ала отырып, символдың орналасуын есептеп шығаруға болады. Бұл операция 9-шы листингте көрсетілген. Жолдағы 1-ші символ 0 нөмеріне ие екенін есте сақтаңыз. С-дің басқа да көптеген функциялары сияқты, strchr( ) функциясы символдардың регистрін ажыратады. Сол үшін мысалға алсақ, “raffle” жолынан “F” әріпін таппайды.
1.5.2 Strrchr ( ) функциясы
strrchr () кітапханалық функциясы strchr() функциясына ұқсас, бірақ бір айырмашылығы, ол берілген символдың жолға соңғы енуін іздейді. Ол төмендегідей прототипке ие:
char * strrchr (const char* str, int ch);
strrchr ( ) функциясы берілген ch символының соңғы позициясына сілтеуішті қайтарады, ол str жолында немесе NULL –да, егер тек бұл сивол жоқ болған кезде.
1.5.3 Strcspn ( ) функциясы
Strcspn( ) кітапханалық функциясы екінші жолдағы кез келген символдың бірінші кірісін іздейді. Ол төмендегідей прототипке ие:
Size _ t strcspn (const char *str1, const char *str2);
Strcspn ( ) функциясы str1-дің бірінші символынан жұмысын бастайды және str2 жолынан кез келген символдың кездесуін тексереді. Есте сақтаған жөн, бұл функция бәрін бүтіндей емес, str1- ден тек str2-ден бөлек символдарды іздейді. Сәйкестік табылған кезде, функция str1 жолының басынан бастап сиымдылықты кері қайтарады. Str1 бұл жерде табылған символдың мекенін сипаттайды. Егер бірде-бір сәйкестік табылмаса, онда функция strlen (str1) мағынасын қайтарады. Бұл бірінші табылған сәйкестік екі жолдың аяқтаушы нөлдік символдың арасында табылғанын білдіреді. Strcspn ( ) функциясының қолданылуы 10-шы листингте көрсетілген.
1.5.4 Strspn ( ) функциясы
Бұл функция үстідегі strcspn () функциясымен туыстас. Оның прототипі төмендегідей түрге ие:
Size _ t strspn(const char* str16 const char *str2);
Strspn ( ) функциясы str2 жолында жоқ символды кездестірмейінше, str1 жолының символдарын кезекпен жинайды. Ол str2 жолына кірмейтін, str1 жолындағы бірінші символдың позициясының нөмірін кері қайтарады. Егер мұндай символ кездессе, онда функция бірден 0-ді қайтарады. Strspn() функциясының жұмысы 11-ші листингте көрсетілген.
1.5.5 Strpbrk ( ) функциясы
Бұл кітапханалық функия strcspn( ) функциясымен үйлесімді.
Ол тура соны орындайды. Арасындағы айырмашылықа strpbrk() функциясы талданатын функциялар қатарына аяқтаушы 0-ді қоспайтыны жатады. Прототипі төмендегідей:
Char* strpbrk (const char* str1, const char* str2);
Strpbrk ( ) функциясы str2-нің сәйкес кез келген str1-дегі бірінші символға сілтеуішті кері қайтарады. Егер сәйкестік табылмаса, NULL қайтады.
1.5.6 Strstr ( ) функциясы
Соңғы және Си-дің «жолдар бойынша іздеу» функцияларының ішіндегі ең пайдалысы – strstr ( ) функциясы. Ол төмендегідей прототипке ие:
Char* strstr(const char* str1, const char* str2);
Strstr ( ) функциясы str1 жолының ішіндегі str2 жолынан басталатын бірінші позицияға сілтеуішті кері қайтарады. Егер ол жолдың арасында мұндай сәйкестіктер болмаса, онда функция NULL –ді қайтарады. Егер екінші жол 0 ұзындығын иемденсе, функция Str1 сілтеуішін кері қайтарады. Бір жолдың басқа жолға енген жерін таба отырып, сілтеуіштің көмегімен str1 –ден бастап str2-ге қарасты сиымдылықты есептеуге болады. Іздеу және салыстыру символдардың регистрінің ажыратуымен орындалады. Strstr ( ) функциясының қолданылуы 12-ші листингте көрсетілген.
1-ші листинг
/* strlen ( ) функциясының қолданылуы.*/
#include
#include
int main (void)
{ size_ t length; char buf [80];
while(1)
{puts (“\nEnter a line of text, a blank line to exit.”);
gets(buf); Length= strlen (buf);
if (Length і=0)
printf(“\nThat line is u characters long.”, length); else break;}
return 0;}
2.1 Жолдарды көшіруге мысалдар
/* strcpy ( ) демонстрациясы*/
#include
#include
#include
char source [ ] = “The source string.”;
int main ( void)
{char dest1[80]; char *dest2, *dest3;
printf(“\nsource: %s”, source);
/* dest1-ге көшіру болады, dest1 сілтейтін болғандықтан*/
strcpy (dest1, source);
printf(“\ndest1: %s”, dest1);
/* dest2-ге көшіру үшін міндетті түрде жады бөлу қажет.*/
dest2=(char*) ma11oc(strlen(source) +1);
strcpy(dest2, source);
printf (“\ndest2: %s\n”,dest2);
/*Жады бөлінбейінше көшіруді орындауға тиым салынады.*/
/* Келесі оператор үлкен қателіктер тудыруы мүмкін едію*/
/* strcpy (dest3, source);*/
return 0;}
3-ші листинг
/*strncpy( ) функциясының қолданылуы*/
#include
#include
char dest[ ] =”……………….”;
char source [ ] = “abcdefghijkmnopqrstuvwxyz”;
int main (void)
{size_t n;
while(1)
{puts(“Enter the number of characters to copy (1-26)”);
scanf (“#d”, &n);
if (n>0 && n<27)break;}
printf(“\nBefore strncpy destination = %s”, dest);
strncpy(dest, source, n);
printf(“\nAfter strncpy destination =%s\n”, dest);
return 0;}
4-ші листинг
/* Strdup( ) стандарттық функциясының қолданылуы*/
#include
#include
#include
char source [ ]= “The source string”;
int main(void)
{char*dest;
if ((dest=strdup(source) = = NULL)
{fprintf(stderr, “Error allocating memory.”);
exit(1); }
printf(“The destination = %s\n”,dest); return 0; }
2.2 Жолдардың тіркесуіне мысалдар
5-ші листинг
/* Strcat ( ) функциясының қолданылуы*/
#include
#include
char str1[27]=”a”;char str2[2];
int main(void)
{int n; /* str2 [] жолының соңына нөлдік символдың орналасуы*/
str2[1]=’\0’;
for (n=98; n<123; n++)
{ str2[0]=n; strcat (str1,str2);
puts(str1);}
return 0;}
6-листинг
/* Strncat( ) функциясының қолданылуы*/
#include
#include
char str2[ ] = “abcdefghijklmnopqrstuvwxyz”;
int main(void)
{ char str1[27];int n;
for (n=1; n<27; n++)
{ strcpy(str1,**); strncat(str1,str2,n); puts(str1); }
return 0;}
7-ші листинг
/*strcmp ( ) функциясының қолданылуы*/
#inciude
#include
int main(void)
{ char str1[80],str2[80]; int x;
while(1)
{ /*екі жолдың кірісі.*/
printf(“\n\nInput the first string, a blank to exit:”);
gets(str1);
if (strlen(str1)= = 0) break;
printf(“\nInput the second string:”);
gets(str2);
/*салыстыру және нәтиже.*/
x=strcmp(str1,str2);
printf(“\nstrcmp(%s,%s) returns %d”, str1, str2, x); }
return 0; }
2.3 Жолдарды салыстырудың есепте қолданылуы
8-ші листинг
/* Srtncmp ( ) функциясының қолданылуы*/
#include
#include
char str1[ ] = “The first string.”; char str2[ ]= “The second string.”; int main(void)
{ size_ t n,x;
puts(str1); puts(str2);
while (1)
{ puts(“\n\nEnter number of characters to compare, 0 to exit.”); scanf(“%d”,&n);
if (n<=0) break;
x=strncmp (str1,str2,n);
printf(“\nComparing %d characters, strncmp( ) returns %d.”,n,x);}
return 0;}
2.4 Жолдар бойынша іздеуге түрлі мысалдар
9-шы листинг
/*strchr ( ) функциясының қолданылуы*/
#include
#include
int main(void)
{char*loc, buf[80];
int ch;
/*жолдың және символдың енгізілуі.*/
printf(“Enter the string to be searched:”); gets(buf);
printf(“Enter the character to search for:”);ch=getchar( );
/*іздеу.*/
loc=strchr(buf,ch);
if (loc = = NULL)
printf(“The character %c was not found.”,ch);
else printf(“The character %c was found at position %d.\n”, ch, loc-buf);
return 0;}
10-шы листинг
/*strcspn( ) функциясының көмегімен жолдарда іздеу*/
# include
# include
int main (void)
{ char buf1[80],buf2[80]; size_ t loc;
/*жолдарды енгізу*/
printf(“Enter the string to be searched:”); gets (buf1);
printf (“Enter the string containing target characters:”); gets (buf2);
/*символдарды іздеу. */
loc=strcspn (buf1,buf2);
if (loc ==strlen (buf1) )
printf(“ No match was found.”); else
printf(“The first match was found at position %d.\n”,loc);
return 0;}
11-ші листинг
/*strspn ( ) функциясының көмегімен жолдарда іздеу*/
# include
# include
int main (void)
{ char buf1[80], buf2[80];
size_ t loc;
/*жолдарды енгізу*/
printf(“Enter the string to be searched:”); gets (buf1);
printf(“Enter the string containing target characters:”); gets(buf2);
/*жолдарда іздеу.*/
loc = strspn (buf1,buf2);
if (loc = = 0)
printf (“No match was found.\n”);
else
printf (“Characters match up to position %d.\n”,loc-1);
return 0;}
12-ші листинг
/*strstr ( ) функциясының көмегімен жолдарда іздеу*/
#include
#include
int main (void) {
char *loc,buf1[80], buf2[80];
/*жолдарды енгізу.*/
printf(“Enter the string to be searched:”);
gets (buf1);
printf(“Enter the target string:”);
gets (buf2);
/*іздеу.*/
loc = strstr(buf1,buf2);
if (loc = = NULL)
printf(“No match was found.\n”);
else
printf(“%s was found at position %d.\n”, buf2, loc-buf1);
return 0;}
№ 17, 18 практикалық сабақтың тақырыбы: Символдық жолдарды өңдеу функциялары.
Тапсырма: Төмендегі есептердің Си тілінде программасын құрыңдар:
Бiр топтағы фамилиялары бiрдей студенттерді табыңдар.
Топ студенттерің фамилиялары мен аттарының бiрiншi әрпiн шығарыңдар.
Әрбiр сөзден кейiн бiр бос орын қалдырылған сөйлемдер берiлген. Құрамында дауысты әріптер ең көп кездесетiн сөздi табыңдар.
Әрбiр сөзден кейiн бiр бос орын қалдырылған сөйлемдер берiлген. Құрамында берiлген әрiптен басталатын сөздердiң санын анықтаңдар.
Әрбiр сөзден кейiн бiр бос орын қалдырылған сөйлем берiлген. Сөйлемдегі ең ұзын сөздi табыңдар.
Әрбiр сөзден кейiн бiр бос орын қалдырылған сөйлем берiлген. Сөйлем ішіндегі жақшалардың дұрыс қойылғанын тексерiңдер.
Әрбiр сөзден кейiн бiр бос орын қалдырылған сөйлемдер берiлген. Сөйлем ішіндегі жақшаға алынған мәтiндердi өшіріңдер.
Берілген сөз тіркесіндегі әрбiр нүктенi көп нүктемен (яғни үш нүктемен) алмастырыңдар.
Алдыңғы есеп шартындағы қатар келген нүктелердiң әрбiр тобын бiр нүктемен алмастырыңдар.
Әрбiр сөзден кейiн бiр бос орын қалдырылған сөйлем берiлген. Барлық сөздердi керiсiнше жазып шығыңдар.
Пернетақтадан енгiзiлген сөздердегi әрiптердiң санын есептейтiн программа жазыңдар. Tапсырманы do … while циклында орындаңдар.
Натурал п саны және S1, S2, ... Sп символдары берiлген. Осы символдардың арасында неше рет + символы кездесетiнiн анықтаңдар.
Натурал п саны және S1, S2, ... Sп символдары берiлген. Осы символдардың арасында * символдарының санын есептеңдер.
Натурал п саны және S1, S2, ... Sп символдары берiлген. Осы символдардың арасында қандай символдар көп: + немесе * символы ма?
Сөз тiркесi енгiзiлгеннен кейiн оның құрамында бір символ қалғанша, тіркесті цикл сайын бір символға қысқарта отырып, сөздердің барлық нұсқаларын экранға шығаратын программа жазыңдар.
Енгізілген сөз тiркесiндегі сөздердiң санын анықтайтын программа жазыңдар. Бiр сөз екiншiсiнен бiр бос орын арқылы айырылады деп санау керек.
Мәтiнi пернетақтадан енгiзiлген телеграмманың бағасын есептейтiн программа жазыңдар.
Берiлген сөзде бiрiншi және соңғы әрiптердiң қайсысы көп кездесетiнiн анықтайтын программа жазыңдар.
Берiлген сөздің жұп нөмiрлi орындарында қанша ―о әрпi бар екендiгiн анықтайтын программа жазыңдар.
Студенттің фамилиясы, есiмi және әкесiнiң аты бос орындармен бөлiнiп берiлген. Студенттің аты-жөнінің инициалдарын (алғашқы әрiптерiн) басып шығаратын программа жазыңдар.
Сөз тіркесіндегi а әрпiн өшіретін программа жазыңдар.
Мәтiндегi соңғы әрiппен бiрдей әрiптердi жоятын программа жазыңдар.
Берілген әріп дауысты ма екенін анықтаңдар.
Сөздегі орыс алфавитінің бас әріптерін экранға шығарыңдар.
6 цифрдан тұратын трамвай билетінің «бақытты билет» екенін анықтаңдар.
Символдық жолдағы жақша ішіндегі символдарды экранға шығарыңдар.
Сызықшамен бөлінген екі сөздің алғашқысын экранға шығарыңдар.
Сөздегі бірінші кездескен «а» әрпінің индексін табыңдар.
Сөйлемдегі сөздердің санын табыңдар.
Берілген мәтіндегі “а” әрпін “о” әрпімен алмастырыңдар.
Берілген әріп дауысты ма екенін анықтаңдар.
1 ашылған және 1 жабылған жақшасы бар мәтін берілген. Жақша ішіндегі барлық символдарды шығарыңдар.
Сөйлемдегі неше сөз берілген әріптен басталады?
Латын әрпімен жазылған сөздегі барлық кіші әріптерді бас әріппен алмастырыңдар.
Əдістемелік нұсқау: Берілген есептің қойылысын талдап, С/C++ тіліндегі программасын құрыңдар. Dev C++ ортасында программаны орындатып,тестілеңдер.
№9. СОБӨЖ.
Тақырыбы: Символдық жолдарды өңдеу функциялары.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
1.жолды енгізу жəне шығару функциялары
2. strlen(), strcat(), strcpy() функциялары.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [680-698]
№9. СӨЖ.
Тақырыбы: Символдық жолдарды өңдеу функциялары.
Тапсырма: Сұрақтарға жауап беру.
Сұрақтар:
1.жолды енгізу жəне шығару функциялары
2. strlen(), strcat(), strcpy() функциялары.
Əдістемелік нұсқау: Берілген сұрақтарға жауап дайындап, конспектілеңдер.
Әдебиеттер: 8 [680-698]
Оныншы апта
Cи тілінде функцияны анықтау форматы:
тип функция аты (параметрлер спецификациясы)
{функция денесі}
Функцияны шақыру операторы былайша жүргізіледі:
функция аты (нақты параметрлер тізімі)
Функциядан қайтару үшін return операторы қолданылады.
Жалпы түрі: return өрнек;
Функциялар. Басқа программалау тілдерімен салыстырғанда Си тілінде процедура, подпрограмма және функцияға бөлу жоқ, мұнда программа тек функциямен құрылады. Функция – нақты бір есепті шешуге арналған операторлар мен хабарландырулар жиынтығы. Әр функцияны хабарлау үшін, анықтау және шақыру үшін қолданылатын оның аты болу керек. Си тіліндегі кез келген программада main (басты функция) атты функция болуы керек, тек осы функциядан кез-келген программа басталады. Функцияны шақыру кезінде оған аргументтер (формальді параметрлер) көмегімен функцияны орындау кезінде қолданылатын кейбір мәндер берілуі мүмкін.
Достарыңызбен бөлісу: |