Сандарды спираль бойынша орналастыру


Жұмыс түрі: Материал
Тегін: Антиплагиат
Көлемі: 13 бет
Таңдаулыға:
Тақырыбы: Сандарды спираль бойынша орналастыру
Кіріспе
1. Есептің қойылымы және тапсырманы талдау
2. Теориялық бөлім
3. Программаны жобалау
4. Программаны жүзеге асыру
5. Программаны тестілеу
Қорытынды
Әдебиеттер
Қосымша A:Программа листингі
Кіріспе
Си тіліндегі кез келген программа бір немесе бірнеше функциялардан, қажетті деген бір немесе бірнеше модульдерден тұрады. Си тіліндегі қарапайым программаны мысал ретінде қарастырайық.
# include <stdio. h> /*препроцессордың директивалары*/
main () /*негізгі функция*/
{
int m; /*айнымалыны сипаттау*/
m=1; /*меншіктеу операторы*/
printf(“%d басты белгісі \n”, m) ; /*шығару функциясы*/
}
Компиляторды жүктеу барысында алдыменнен препроцессор іске қосылады. Препроцессор # - фунт символынан басталатын препроцессор нұсқауларын іздестіре бастайды. Бұл нұсқаулардың негізгі қызметі бастапқы код мәтінін өзгерту. Нәтижесінде пайдаланушыға көрінбейтін уақытша файл пайда болады. Компилятор жүктелу нәтижесінде осы файлды оқып орындалатын файлға түрлендіреді. Бұл әдіс #include директивасына да қолданылып, препроцессорге көрсетілген файлды бастапқы код мәтініне қосуға мәжбүр етеді. Осы себепті компилятор бастапқы код мәтінін өңдеуге кіріскенде барлық қосымша файлдар кірістіріліп тұрады.
# include - “<” және “>” таңбалары арқылы аты көрсетілген файлды тіркеу керектігін білдіретін препроцессор нұсқауы.
# include <stdio. h> - stdio. h (кіріс - шығыс ағысы) файылын тіркеу.
# include < alloc. h> - жады мен жұмыс істеуге арналған функциялар жиынтығын аныжады мен жұмыс істеуге арналған функциялар жиынтығын анықтайтын модуль.
# include <stlib. h> - кездейсоқ сандар генераторымен жұмыс істеуге мүмкіндік береді.
1. Есептің қойылымы және тапсырманы талдау
Спираль бойымен 1, 2, 3, . . . сандар орналасқан, N өлшемді квадрат матрицасын алу :
2. Теориялық бөлім
Мәліметтердің динамикалық құрылымы - өлшемдері программаның орындалу барысында өзгеретін ( өсетін немесе кемитін) мәліметтер құрылымы.
Мәліметтердің динамикалық құрылымын құру және қолдану жаңа түйіндерді сақтау және керексіз болып қалған жадылар блоктарын босату үшін орындалу процесінде қосымша жадыны алу мүмкіндіктері жадыны динамикалық үлестіруді талап етеді. Динамикалық жадымен бөлінетін максималды өлшем компьютердің мүмкіндікті физикалық жадымен немесе виртуальді жадысы бар жүйедегі мүмкіндікті виртуальді адрестік кеңістікпен анықталады. Жадыны динамикалық үлестіру үшін malloc және free функцияларын, сондай - ақ sizeof операциясын қолдану қажет. Malloc функциясын void* типті жадысына бөлінетін көрсеткішті қайтару және бөлу қажетті байт санының аргументі ретінде қолданады. Void* көрсеткішін кез келген айнымалы көрсеткішке меншіктеуге болады. Malloc функциясы әдетте sizeof операциясымен бірге қолданылады. Егер жадының қажетті саны болмаса, онда malloc NULL көрсеткішін қайтарады. Free функциясы жадыны босатады, яғни жады жүйеге қайтарылады және келешекте оны қайтадан ерекшелейді ( бөледі) .
Байланысқан тізім - кез келген орнында қоюды және жоюды іске асыруға болатын мәліметтер элементтерінің << тізілген қатар>> жиынтығы. Байланысқан тізімге қатынас тізімнің бірінші түйінінде көрсеткішпен қамтамасыз етіледі. Келесі түйіндерге қатынас әрбір түйінде сақталатын байланысқан көрсеткішпен орындалады. Байланысқан көрсеткіш жалпы келісіммен тізімнің соңғы түйінінде тізімнің соңын білдіріп, NULL - мен орнатылады. Мәліметтер байланысқан тізімде сақталады, динамикалық - әрбір түйін қажеттілігіне қарай құрылады.
3. Программаны жобалау
Cи тілінде стандатты функциялармен қатар тұтынушы өзі құрастырған функциялармен де жұмыс істеу мүмкіндгі жасалған. Ол функцияны алдын ала main() функциясына дейін толық анықтау керек немесе оны алдын ала қысқаша сипаттап алып, main() функциясынан кейін толық анықтауға болады. Сондықтан, тұтынушы функциялары декларациясы екі түрде (қысқаша функциядан кейін немесе функцияға дейін) толық берілуі мүмкін.
Функцияны алдын ала сипаттау барысында программалық файлдың басында оның прототипі көрсетіледі, өйткені негізгі функцияда оның айнымалылары типтері белгілі болуы тиіс. Ол келесі түрде жазылады.
<нәтиже-типі> <функция аты> (<тип><айнымалы1; >, <тип><айнымалы2; >, … <тип><айнымалы N>) ;
Прототиптегі жай жақшаларға алынған айнымалылар идентификаторларын көрсетпесе де болады, өйткені тілдің компиляторлары оларды өңдемейді.
Параметрлер тізімімен берілген fan функциясын сипаттаудың мысалын қарастыайық, мысалы:
Float fun(int, float, int, int) ;
Функция прототипі компиляторға программа мәтінінде негізгі программадан (main() ) кейін оның толық анықтамасы келтірілетінін білдіреді. <нәтиже типі> <функция аты>(параметрлер тізімі)
{
Функция коды
}
Нәтиже типі return операторларының көмегімен функцияның шақырылу нүктесіне қайтарылатын мәннің типін көрсетеді. Егер функция типі көрсетілмесе, қайтарылатын мән int типті деп саналады. Параметрлер тізімі үтірмен ажыратылған типтер мен параметрлер аттарының тізбегінен тұрады. Егер функцияның параметрлері болмаса да, жай жақшалар бәрі бір міндетті түрде көрсетілуі тиіс.
return операторы берілген функциядан бірден шығып, нәтиженің оны шақырушы функцияға қайтаралуын қамтамасыз етеді, яғни бұл оператор функция жұмысы нәтижесін қайтару қызметін атқарады. Функция тұлғасында бірнеше return операторы болуы немесе бір де бір рет кездеспеуі де мүмкін екендігін айта кеткен жөн. Мұндай жағдайда шақырушы функцияға қайту оның тұлғасындағы соңғы оператор орындалғаннан кейін барып жүзеге асып асырылады.
Екі бүтін санның ішіндегі кішісін анықтайтын функцияны жазып көрейік. Мысалы:
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) .
Си тілінде әрбір функция-программаның жеке бөлігі, оны орындау үшін осы функцияны шақыру керек.
Функция келесі түрде шақырылады:
<функция аты>(аргументтер тізімі) ;
Мұндағы аргументтер ретінде тұрақтыларды, айнымалыларды, өрнектерді (олардың мәндері функцияны шақырудан бұрын программа анықталады)
Қолдануға болады. Функцияны шақыру тізімнің аргументтері сол функцияның анықталу параметрлерінің тізімімен саны жағынан, орналасу ретімен, сәкес параметрлері типтерімен толықтай үйлесуі тиіс. Аргументтер жоқ болған жағдайда да, функция атынан кейінгі жац жақшалардың болуы міндетті
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] ) ;
Көрсеткіштер
Көрсеткіштер деп - мәндері жады адрестері болатын айнымалыларды айтады. Яғни көрсеткіштін мәні нақты мәні бар айнымалы адресі. Айнымалы мәніне тікелей сілтеме жасайды, ал көрсеткіш сол мәнге жанама сілтеме жасайды. Мәнге көрсеткіш арқылы жанама сілтеме жасау жанама адрестеу деп аталады. Адрестік операциялар үшін си тілінде екі арнайы оператор қолданылады.
& -адресті анықтау үшін қолданылатын операция;
* -адрес арқылы қатынас жасау үшін қолданылатын операциялар;
& операциясы берілген айнымалының адресін қайтарады. Мысалы, программа мәнінде Sum айнымалысы мынандай болсын:
Int sum;
Онда &sum жазуы осы айнымалының компьютер жадындағы орналасқан ұясының адресі болып табылады.
Кез келген айнымалылар сияқты көрсеткіштер де қолданылмас бұрын баяндалуы қажет.
Мысалы:int*countPtr, count;
Мұндағы Int* (бүтін санды мәнге көрсеткіш) типті countPtr айнымалысы баяндалған. Баяндауда * символы countPtr айнымалысына ғана таратылады. Бұл символ баяндалатын айнымалыкөрсеткіш екендігін көрсетеді. Кез келген типті объектілерге сілтенетін көрсеткіштерді баяндауға болады.
Көрсеткіштерді баяндалу кезінде меншіктеу операторының көмегімен де мән қабылдай алады.
Көрсеткіштерге қолданылатын амалда:
Си тілінде көрсеткіштерге 5 негізгі операцияларды қолдануға болады. :
- Меншіктеу. Көрсеткіштерге адресті меншіктеуге болады. Массивтің атын немесе адресті анықтайтын (&) операциясын қолданып, әдетте адресті меншіктеуге болады.
- Мәнді анықтау. Берілген дербес бойынша қайсыбір ұяшықта сақталған мәнді анықтау үшін (*) опрациясын қолданылады.
- Көрсеткіштің адресін анықтау. Көрсеткіш типті айнымалының басқа айнымалылар сияқты адресі және мәні болады. & операциясы арқылы массивтін келесі элементіне өтуге болады.
- Көрсеткіштер арттыру. Бұл амал қарапайым қосу операциясы немесе арттыру операциясы арқылы массивтің келесі элементіне өтуге болады.
- Көрсеткіштердің айырымы. Екі көрсеткіштің айырмасын табуға болады. Әдетте бұл операция элеметтері бір бірінің арасындағы ара қашықтықты табу үшін бір массив элементтеріне сілтенетін көрсеткіштер үшін орынды. Нәтиже массив өлшемін бар болдыратын айнымалының типіндей болады.
Массивтерде көрсеткіштерді қолднылуын қарастырайық. Мысалы.
a=&a[0] ;
Бұлар көрсеткіштер мен массивтер арасындағы байланысты көрсетеді. Яғни массивтің жеке элементін анықтау үшін немесе оның мәніңн пайдалану үшін көрсеткішті пайдалануға болады.
Random(A ) - 0 - ден А-1 - ге дейінгі кездейсоқ сандарды алу функциясы.
Free () - жадыдағы қолданылған аймақты тазарту функциясы.
Coreleft - жадыдағы мүмкін бос орын мөлшерін анықтайтын функция.
Sizeof- көрсетілген типтің жадыдан қанша байт орын алатынын анықтайды.
Calloc - жадыда белгілі бір мөлшерде ұяшықтар дайындаушы функция.
4. Программаны жүзеге асыру
Си тілінде бірнеше негізгі мәліметтер типтері бар. Си тілі стандартында әр түрлі мәліметтер типтерін анықтайтын жеті кілттік сөздер қолданылады : int, long, short, unsigned, char, float, double.
Int, short, long типтері . Бұл типтер << таңбалы>> мәліметтерді анықтайды, яғни айнымалы мән ретінде оң сандарды, теріс сандарды және нөл санын қабылдай алады.
Айнымалының типін анықтау :
Int m1, m2;
Short k1, k2, k3;
Long 11, 12, 13;
Unsigned long int rt1, rt2;
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

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