Си тілі. Программаны жобалау


Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 15 бет
Таңдаулыға:
Курстық жұмыстың жалпы мазмұны:
Кіріспе
Есептің қойылымы және тапсырманы талдау4-бет.
- Теориялық бөлім5-11-бет.
- Программаны жобалау12-13-бет.
- Программаны жүзеге асыру14-15-бет.
Қорытынды18-бет.
Әдебиеттер тізімі19-бет
Қосымша А: Программаның модульдік схемасы16-бет.
Қосымша Б: Программа листингі17-бет.
Кіріспе
Cи тілінде кез келген программа бір немесе бірнеше функциялар мен қажетті бір немесе бірнеше модульдерден тұрады. Си тілінде қарапайым программаны мысал ретінде қарастырайық.
#include<stdio. h>
Main()
{
Int F;
F=9;
Printf(“%d”, F) ;
}
Компиляторды жүктеу барысында алдыменен препроцессор іске қосылады. Препроцессор #-фунт символынан басталатын препроцессор нұсқауларын іздестіре бастайды. Бұл нұсқаулардың негізгі қызметі бастапқы код мәтінін өзгерту. Нәтижесінде пайдаланушыға көрінбейтін уақытша файл пайда болады. Компилятор жүктелу нәтижесінде осы файлды оқып орындалатын файлға түрлендіреді (компиляция жасайды) . Бұл әдіс #include дериктивасында да қолданылып, препроцессорге көрсетілген файлды бастапқы код мәтініне қосуға мәжбүр етеді. Сол себепті, компилятор бастапқы код мәтінін өндеуге кіріскенде барлық қосымша файдар кірістіріліп тұрады.
# include-“<” және “>” таңбалары арқылы аты көрсетілген файды тіркеу керектігін білдіретін препроцессор нұсқауы (командасы) ;
#include <stdio. h >- stdio. h (кіріс шығыс ағысы) файлын тексеру.
Main() негізгі функция және басқа функциялардан айырмашылығы оның операциялық жүйемен шақырылуында. Басқа функцияларды программа кодын орындау барысында, негізгі функцияда шақыру қажет.
Курстық жұмыстың мақсаты, осы си тілінде массивті қолдана отырып, функциялар мен әр түрлі директиваларды қолданып, массивті кездейсоқ сандармен толтыра отырып. Негізгі және қосымша функциялар арасындағы байланысты көрсету.
Есептің қойылымы және тапсырманы талдау
1. Есептің берілгені:
Қандайда бір n натурал саны берілген. Барлық Пифогордың 3 қабырғаларын табу. Әр қайсысы анықталған n натурал санынан кіші болуы тиіс. Яғни барлық натурал 3-ті: а, в, с: (а<=b<=c<=n) ;
2. Есептің алгаритмі
- Массивті кездейсоқ сандармен толтыру.
- Функцияны шақыру.
- Үштік (а, в, с) қабырғаларына қатысты Пифогор формуласын қолдану.
- n нен кіші элементтерін жауапқа шығару.
Теориялық бөлім
Енгізу және шығару функциялары.
Си тілінде өзіңдік енгізу және шығару функциялары бар. Олардың жалпы сипатталу түрі мынандай:
Scanf(“форматтау” және <адрестер жолы>) ;
Форматтау-айнымалының берілген мәнінің типін анықтайды.
Адрестер жолы-айнымалының мәнінің жадыдағу орналасу адресін анықтайды. Адрес жолы & символы арқылы сипатталады. Мысалы:
Scanf(“%d”, &a) ;
Printf(“форматтар жолы”, <объект>) ;
Мұндағы фоматтар жолы жауапқа шығаратын объектінің типін анықтайды. Формат түрін % символы арқылы анықтаймыз. Объект айнымалы, константа, өрнек бола алады.
Printf(“%d”, a) ;
Mассив
Массив деп-бір типтегі элементтердің логикалық байланысқан жиынтығын айтады. мысалы мынандай тізбек
0 1 1 2 3 5 8 13 21
Фибоначчи тізбегінің 9 элементін құрайды(алғашқы 2 санды таңдап алып келесі санды алдыңғы екеуін қосу жолымен алынады), ал мынау өзіне және бірге бөлінетін жай сандар тізбегінің алғашқы 7 элементі:
1 3 5 7 11 13 17
Осындай бір текті тізбектерді массивті Си тілінде сипаттап, оған бастапқы мән беріп инициалдау үшін былай жазамыз.
int fib[8] ={0, 1, 1, 2, 3, 5, 8, 13, 21}; немесе
int fib[] ={0, 1, 1, 2, 3, 5, 8, 13, 21}; деп көрсетеміз.
Мұндағы fib -массив аты, оның элементтерінің типі int, ал ені, яғни ұзындығы-9, массив элементтерінің индекстері 0-ден бастап нөмірленеді, сол себепті 9 элемент 8 индекспен көрсетіледі. Мәндері толық көрсетілсе, индексті жазбасада болады. Ал былай болса:
Int fib[8] ={0, 1, 2, 3}; қалған элементтері 0 болып саналады.
n=10; k=2; fib[n-k] ={0, 1, 2, 3}; десе де болады.
Жоғарыдағы элементтің 7-ші элементін бір бүтін айнымалыға меншіктеу үшін былай жазамыз.
Int a=fib[6] ; // a=8
Массивті сипаттау кезінде оның ені нақты санмен көрсетіледі, мысалы: а[20], a[n] деп жазу үшін алдын ала
#define n 20; жолы көрсетіледі немесе
Const n=20; болып жазылады.
Массив элементтерін анықтау үшін немесе енгізу үшін көп жағдайда For параметрлі қайталану операторын қолданамыз. Мысалы:
For (i=0; i<n; i++)
{ scanf (“%d”, &a[i] ) ;
Printf (“%d”, a[i] ) ;
}
Егер массив екі өлшемді болса онда, міндетті түрде 2 цикл жазылады. Мысалы:
For (i=0; i<n; i++)
For (j=0; j<m; j++)
Scanf (“%d”, &a[i] [j] ) ;
Қайталану операторы
Қайталану опрераторы програмистке белгілі бір шартқа сәйкес программаның белгілі бір бөлігін бірнеше рет қайталап орындауға мүмкіндік береді.
For (операторының жалпы түрі) :
For() (өрнек 1; өрнке 2; өрнке 3) оператор;
Мұндағы өрнек 1-әдетте айнымалының бастапқы мәнің береді; өрнек 2- циклдың жалғасу шарты. өрнке 3-әдетте циклдың орындалу кезіндегі цикл айнымалысының қандай да бір өзгерісін береді (++/--) .
Өрнек 1 қайталану барысында бір рет қана орындалады. Егер өрнек 2 мәні ақиқат болса (немесе нөлге тең емес болса), цикл денесі бір рет орындалады да, өрнек 3 есептелінеді, сосын өрнек 2 мәні тағы да тексеріледі. For операторы-бұл алғашқы шартты цикл: цикл денесі орындалу керек емес екнін бастапқыда анықтайды. Оператор қарапайым және құрылымды болуы мүмкін.
Мысалы:
Main()
{
Int x;
For(x=1; x<=10; x++)
Printf(“%d%d”, x, x++) ;
}
For операторындағы өрнек 3-ге азайту операторларын қолдануға болады.
For(n=10; n>=0; n--)
Printf(“%d\n”, n) ;
For операторындағы кез келген өрнектерді тастап кетуге болады, бірақ бұл кезде « үтір нүкте» символын ұмытпау керек. Цикл денесе соңында әйтеуір цикл жұмысын аяқтауға келтіретін бірнеше операторларды қосу керек.
Y=2;
For(n=4; y<=100; y=y*n)
Өрнек 3 тің орнына кез келген дұрыс құралған өрнекті қоюға болады. Мысалы:
For(n=5; n<100; n=n+10)
Printf(“%d\n”, n) ;
For(d=10. 0; d<500; d=d*1. 5)
Printf(“%f\n”, d) ;
If, If-Else шартты операторлары .
Си тілінде таңдау құрылымының 3 түрі бар. If таңдау құрылымы шарттқа сәйкес қайсыбір әрекеттің орындалуын (шарт ақиқат болса), орындалмауын (шарт жалған болса) анықтайды. If/Else таңдау құрылымы жоғарыда айтылған құрылымға сәйкес келеді.
If құрылымын жалғыз таңдауы бар құрылым деп аталынады. Себебі онда 1 әрекет ғана таңдалады. If/Else құрылымын 2 таңдауы бар құрылым деп атайды. Себебі онда 2 альтернативті әрекеттің арасында таңдау орындалады.
If таңдау құрылымының жалпы түрі:
If(өрнек) оператор1;
If/Else құрылымының жалпы түрі:
If(өрнек) оператор1;
Else оператор2;
If/Else құрылымы өрнек мәні ақиқат болған жағдайда ғана (нөлден өзгеше болған кезде) оператор1; орындалады, Керісінше жағдайда оператор2; орындалады.
Логикалық операторлар
Екі немесе оданда көп шарттарды біріктіру үшін логикалық операциялар қолднылады. Си тілінде олардың саны 3-еу.
&&(және), // (немесе), !(“жоқ”немесе”емес”) .
- А11&&A12 өрнегінің мәні ақиқат болады егер екі өрнектің мәндері ақиқат болса.
- A11//A12өрнектің мәні ақиқат болады, егер екі өрнектің ең болмағанда біреуі ақиқат болса немесе екеуі де ақиқат болса.
- !A11 өрнегінің мәні ақиқат болады, егерде A11 өрнегінің мәні жалған болса және керісінше.
... жалғасыФункциялар
Cи тілінде стандатты функциялармен қатар тұтынушы өзі құрастырған функциялармен де жұмыс істеу мүмкіндгі жасалған. Ол функцияны алдын ала main() функциясына дейін толық анықтау керек немесе оны алдын ала қысқаша сипаттап алып, (main() функциясынан кейін толық анықтауға болады. Сондықтан, тұтынушы функциялары декларациясы екі түрде қысқаша функциясынан кейін немесе дейін) толық берілуі мүмкін.
Функцияны алдын ала сипаттау барысында программалық файлдың басында оның прототипі көрсетіледі, өйткені негізгі функцияда оның айнымалылары типтері белгілі болуы тиіс. Ол келесі түрде жазылады.
<нәтиже-типі> <функция аты> (<тип><айнымалы1; >, <тип><айнымалы2; >, … <тип><айнымалы N>) ;
{
Функция коды
}
Прототиптегі жай жақшаларға алынған айнымалылар идентификаторларын көрсетпесе де болады, өйткеі тілдің компилятордары оларды өңдемейді.
Параметрлер тізімімен берілген fan функциясын сипаттаудын мысалын қарастыайық, мысалы:
Float fun(int, float, int, int) ;
Функция прототипі компиляторға программа мәтінінде негізгі программадан (main() ) кейін оның толық анықтамасы келтірілетінін білдіреді . <нәтиже типі> <функция аты>(параметрлер тізімі)
Нәтиже типі return операторларының көмегімен функцияның шақырылу нүктесіне қайтарылатын мәннің типін көрсетеді. Егер функция типі көрсетілмесе, қайтарылатын мән int типті деп саналады. Параметрлер тізімі үтірмен ажыратылған типтер мен параметрлер аттарының тізбегінен тұрады. Егер функцияның параметрлері болмаса да, жай жақшалар бәрі бір міндетті түрде көрсетілуі тиіс.
return операторы берілген функциядан бірден шығып, нәтиженің оны шақырушы функцияға қайтаралуын қамтамасыз етеді, яғни бұл оператор функция жұмысы нәтижесін қайтару қызметін атқарады. Функция тұлғасында бірнеше return операторы болуы немесе бір де бір рет кездеспеуі де мүмкін екендігін айта кеткен жөн. Мұндай жағдайда шақырушы функцияға қайту оның тұлғасындағы соңғы оператор орындалғаннан кейін барып жүзеге асып асырылады. Eгер функцияда ешқандай параметрлер көрсетілмесе, онда функцияны декларациялау барысында жай жақша ішінде void сөзін жазған дұрыс. Мысалы, негізгі функция тақырыбының көбінесе былай жазылуы мүнкін:
Main(void) .
Си тілінде әрбір функция-программаның жеке бөлігі, оны орындау үшін осы функцияны шақыру керек.
Функция келесі түрде шақырылады:
<функция аты>(аргументтер тізімі) ;
Мұндағы аргументтер ретінде тұрақтыларды, айнымалыларды, өрнектерді (олардың мәндері функцияны шақырудан бұрын программа анықталады) . Қолдануға болады. Функцияны шақыру тізімнің аргументтері сол функцияның анықталу параметрлерінің тізімімен саны жағынан, орналасу ретімен, сәйкес параметрлері типтерімен толықтай үйлесуі тиіс. Аргументтер жоқ болған жағдайда да, функция атынан кейін жақшалардың болуы міндетті.
Екі бүтін санның ішіндегі кішісін анықтайтын функцияны жазып көрейік. Мысалы:
Int mini(int x, int y)
{int t;
if(x<y) t=x;
else t=y;
return t;
}
Mini функциясын келесі түрде жазуға болады:
Mini(int x, int y)
{
Return(x<y) ? x:y;
}
Екі бүтін санның ішіндегі үлкенін анықтайтын функцияның мысалы:
Int maxi(int x, int y)
{
If(x>y)
Return(x) ;
else
return (y) ;
}
Егер қайтарылатын мәннің типі көрсетілмесе, ол int типті болып есептелінеді.
Си тілінде мәнді қайтаратын барлық функциялар өрнектердің оң жағында жазылуы тиіс, өйтпеген жағдайда ешқандай мән қайтарылмайды. Бірақ функция нәтижесінің адресі қайтарылатын болса, онда ол void( бос ) типті функция ретінде сиптталуы тиіс.
Мысалы, дисплей экранына бір толық жолды шығару үшін келесі функцияны жазамыз:
Void lin(char a)
{
Int k;
For(k=0; k<80; k++)
Printf(“%c”, a) ;
}
Eгер функцияда ешқандай параметрлер көрсетілмесе, онда функцияны декларациялау барысында жай жақша ішінде void сөзін жазған дұрыс. Мысалы, негізгі функция тақырыбы көбінесе былай жазылуы мүнкін:
Main(void) .
Си тілінде әрбір функция-программаның жеке бөлігі, оны орындау үшін осы функцияны шақыру керек.
Функция келесі түрде шақырылады:
<функция аты>(аргументтер тізімі) ;
Мұндағы аргументтер ретінде тұрақтыларды, айнымалыларды, өрнектерді (олардың мәндері функцияны шақырудан бұрын программа анықталады)
Қолдануға болады. Функцияны шақыру тізімнің аргументтері сол функцияның анықталу параметрлерінің тізімімен саны жағынан, орналасу ретімен, сәкес параметрлері типтерімен толықтай үйлесуі тиіс. Аргументтер жоқ болған жағдайда да, функция атынан кейінгі жақшалардың болуы міндетті.
Программаны жобалау
Берілген есепте бізде бір ғана функция қарастырылған. Ол мынандай түрде берілген: Int Fun() . Бұл жерде функция аты Fun болса ал ол функцияның типі int типті деп көрсетілген жоғарыда айтылып кеткендей, Бұл жерде функцияның типін көрсетпсе де болады, ал ол кезде функциямыз автоматты түрде int типке түрленеді.
Кейін біз Auto int айнымалыларын:(c[20], a[20], b[20], I, f; ) аламыз. Бұл айнымалылардың қолдану аймағын шектейді.
Жалпы функция программаның белгілі бір бөлігінің қайталанып келген жерін бөліп алып қарастыру болғандықтан, шартқа сәйкес құрылған Пифагордың үшбұрыштарды табуға қатысты жазылған формуласын жазып алып, оны қандайда бір f айнымалысына меншіктеп аламыз. Бұл бізге ары қарай негізгі функциямен жұмыс істеуге мүмкіншілік береді.
Бұл мынандай түрде болады:
If ((f=pow(c[i], 2) ==(a[i] +b[i] ) ) )
return f;
}
Айнымалылардың әрекет ету аймағы-программаның ағымдағы әрекеттеріне қандай мәліметтердің қатынасуға болатынын анықтайтын қағида болып табылады. Айнымалылардың үш типті болады: ауқымды, локальді (жергілікті) және формальды. Жергілікті айнымалылардың әрекет ету аймағы- олар сипаттаған программа бөлігі, яғни олар сол функция тұлғасында ғана белгілі болып табылады. Программаның осы бөлігінен шыққан соң, жергілікті айнымалылармен олардың мәндері жоғалады.
Формальды айнымалылар- тұтынушы функциясының тақырыбында көрсетілген параметрлер функция тұлғасында жергілікті айнымалылар сияқты қолданылады. Формальды параметрлердің әрекет ету аймағы- функция тұлғасы болып табылатын блок.
Ауқымды айнымалылар программадағы функциядан тыс сипатталады. Олар программаның кез келген жерінде қолданылуы мүмкін, сондықтан ауқымды айнымалыларды алдын ала сипаттау және бастапқы мәндерді меншіктеу керек. Ауқымды айнымалылардын әрекет ету аймағы-олар сипттағаннан бастап, программа соңына дейін болып саналады.
Айнымалыны сипаттау операторының жалпы түрі:
[Жады класы] [const] типі аты [инициализатор] ; си тілінде әрбір айнымалы компьютер жадының төрт класының біріне жатуы керек. Жады класы автоматты (auto), сыртқы (extern), статикалық (static), регистрлік (register) мәндерінің бірін қабылдай алады. Мысалы:
Register int a;
Жады класы айнымалының қолданылу мерзімі мен көріну аймағын анықтайты. Егер жады класы тікелей көрсетілмесе, онда компилятор айнымалының программадағы сипатталуына қарай оны өзі анықтайды. Айнымалының қолдану мерзімі тұрақты-программа орындалуының басынан аяғына дейін немесе уақытша-блоктың жұмыс істеу мерзіміне ғана байланысты болады. Ал айнымалының көріну аймағы-сол айнымалыға қол жеткізуге (пайдалануға) болатын программа мәтіні бөлігі. Әдетте көріну аймағы айнымалының әрекет ету аймағына сәйкес келеді. Бірақ кейде программаның ішкі блогында да оның сыртында пайдаланылған аты кездессе, онда оның көріну аймағы ұлғаяды.
Айнымалы үшін жады класы нақты көрсетілмеген жағдайда, ол автоматты класы жадына жатқызылады. Қажет болған жағдайда, функцияны оған берілген аргументтерді өзгерту үшін қолдануға болады. Ол үшін шақырылатын функцияға аргумент ретінде айнымалы мәнінің орнына адресін жіберсе болғаны. Ал аргумент негізгі (оригинал) мәнді падалануы үшін “*” көрсеткіш операциясын қолдану қажет. Мысалы:
Void z1(int*x, int*y)
{ int t;
t=*x;
*x=*y;
*y=t; }
Программаны жүзеге асыру
Алдымен негізгі функцияны сипаттап аламыз, онда қандайда бір айнымалыларды алып сипаттаймыз. Int a[20], b[20], I, n, f, c[20] ; . Осы жерде жоғарыда айтып кеткендей, егер жады класы көрсетілесе, онда компилятор ипатталуына қарай оны өзі анықтайды. Біздің жағдайда бұл Auto айнымалы деп айтуға болады.
Printf(“massif ta neshe element bar? ”) ; деп, қара экранға жақша ішіндегі сөйлемді шығарып алу үшін жазамыз.
Scanf(“%d”, &n) ; деп, n бүтін типті наурал санды енгізіп аламыз. Бұл өз кезегінде циклдың жалғасу шартын көрсетуге көмектеседі.
For(i=0; i<n; i++)
{A[i] =rand() %100-50;
Printf(“%d”, a[i] ) ;
B[i] =rand() %100-55;
Printf(“%d”, b[i] ) ; }
Жазып алып берілген массивті кездейсоқ сандарға толтырамыз, ол үшін rand aтты арнайы функцияны қолданылады.
Бұл функция бізге тек 0 . . . 32767 аралығындағы бүтін сандарменен массивті толтырып шығуға көмектеседі. Ал бұл функцияны қолдану үшін Stdlib. h директивасын қолданамыз. Яғни тақырып файлын қолдану қажет.
Ал массив элементтері арнайы оң және теріс элементтерінен тұру үшін алынған кездейсоқ сан 100 ге бөлініп, қалдығынан 50 ді алып тасталынған.
Ал массивті сол кездейсоқ сандармен толтыру үшін әрине циклді жазу шарт. Массивті толтырып болған соң оны жауапқа шығарамыз.
Келесі жолы программаның функцияны шартқа сәйкес шақыру арқылы функциямен қатынас жасалынады. Функция өз кезегінде жоғарыда баяндалып өткен болатын. Си тілінде функцияны шақыру барысында аргументтер өздерінің осы программадағы мәндеріне сәйкес әрекеттер атқарады, яғни функцияға аргументтердің нақты мәндері емес олардың көшірмелері жіберіледі. Компьютер жадында (стекте) функцияның формальды параметрлері үшін орын бөлінеді және функцияны шақыру кезінде сол бөлінген орындарға нақты аргументтер мәні орналастырылады. Содан кейін функция осы мәндерді пайдаланады, бірақ функциядан шыққан кезде олар жоғалып кетеді
Шарттың ақиқат жалғандығына қарай функцияны fun атымен шақыра отырып, программадағы жауапқа қажетті с[i] массивін шығарады. Ол программада былай көрсетілген:
{ if ((fun(a[i] <=b[i] ) &&(b[i] <=c[i] ) &&(c[i] <=n) ) ) puts(“c massifi ”) ; printf(“%d”, c[i] ) ; }
Getch() ;
}
Деп көрсетілген.
Бұл жерде puts (“c massifi”) ; функциясы қара экранға осы мәтіннің шығып тұруына көмектеседі.
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz