Си тіліндегі құрылымдар


Жоспар:

Кіріспе . . . 3

1. Бөлім. «Си тіліндегі құрылымдар» . . . 4

1. 1. «Құрылымды анықтау» . . . 4

1. 2. «Құрылымды иницалдау» . . . 5

1. 3. «Құрылымдағы массивтерді құру» . . . 6

2. Бөлім. «Қорытынды» . . . 10

Қолданылған әдебиеттер . . . 11

Кіріспе

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

( мысалы, мәліметтер: аты/ фамилиясы/ туған жылы/ емтихан бағалары бойынша студент туралы мәліметтер құрылымын орналастыруға болады) . Құрылым бір-бірімен өзара ауыспалы байланысқан көп жеке элементтер, сонымен қатар бір толық қолданылады. Массив тәріді, құрылым өзімен бірге мәліметтер жиынтығын ұсынады, бірақ одан айырмашылығы оның элементтерінің аты бойынша әр типті болуында. Құрылым қай жерде бір обьектіге қатысты түрлі мәліметтерді біріктіру үшін қолдану қажетті болып табылады.

1. Бөлім. «Си тіліндегі құрылымдар»

1. 1. «Құрылымды анықтау»

Әр түрлі мәліметтерді баяндау үшін және жаңа типтерді ұйымдастыру үшін құрылымды пайдаланған ыңғайлы болып табылады. Құрылымды келесі түрде баяндауға болады:

Struct <rname>;

{

<type><fname>;

}

Мұндағы rname - құрылым аты ( құрылым типінің атын көрсетпесе де болады), {} - жүйелік жақшада структура элементтерінің тізбегі және әрбәр элеметтің типі көрсетілген. Құрылым шаблоны анықталғаннан кейін құрылымдық айнымалының анықталуы келесі түрде жазылады:

struct<rname><vnames>;

vnames- құрылымдық айнымалының аты.

Мысалы:

Struct sved

{

Char fam[25] ;

Char adr[20] ;

Int gr;

};

Struct sved inf;

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

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

Struct

{

char fam[25] ;

char adr[20] ;

} inf;

Егер құрылымдық шаблон бір реттен көп қолданылса, онда әдетте құрылым типінің атымен берілетін форманы қолданады.

1. 2 «Құрылымды иницалдау»

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

Static struct sved inf= {“Сериков”, “Рыскулов. 55”, 1987}

Мысал: ( құрылым элементтеріне қатынау )

#include <stdio. h>

main()

{ char fam[25] ;

char adr[20] ;

int gr;

} inf;

printf(“Фамилияңды енгіз : \n”) ;

gets(inf. fam) ; /*fam элементіне қатынау*/

printf(“Адресіңді енгіз: \n”) ;

gets(inf. adr) ;

printf(“туған жылың : \n”) ;

scanf(“%d”, &inf, gr) ;

printf (“%s, %s . %d\n”, inf. fam, inf. adr, inf. gr) ; }

1. 3 «Құрылымдардан құрылған массивтер»

Есептерді шығару барысында құрылымдардан құрылған массивтер пайданылады, яғни құрылымдық айнымалы массивтің элементі болып табылады. Құрылымдардан құрылған массивтер келесі түрде баяндалады:

Struct sved inf[10] ;

sved типті құрылым inf[10] массивтің элементі болып табылады.

Құрылымдардан құрылған массивтердің элементтерін анықтағанда бөлек алынған құрылым жағдайындадағы сияқты құрылымның аты құрылым элементінің атынан нүкте “. ” (элементті алу операциясы ) символ арқылы бөлектенеді. Мысалы:

inf[0] . fam- массивтң бірінші элементі

inf[1] . fam- массивтің екінші элементі

. . .

Құрылымға көрсеткішті қолдану мүмкіндіктерін қарастырайық. Бұған дейін құрылымдарды функция аргументі ретінде қолдануға болмайтынын ескерткенбіз, ал құрылымға көрсеткішті қолдану құрылым элементтеріне көрсеткіш арқылы қол жеткізуге мүмкіндік береді. Көрсеткіш сипаттамасы төменде берілген (бұған дейін қолданған құрылым массивін қарастырайық) ;

struct knig *ptrst;

knig типті кез-келген құрылымға сілтеуіші ptrst көрсеткіші құрастырылады.

Онда:

ptrst==&masking[0] ;

*ptrst==masking[0] ;

ptrst- >author- ал бұл masking[0] . author-ға эквивалентті.

Егер ptrst masking[0] құрылымына көрсеткіш болса, онда келесі белгілеулер эквиваленттә:

masking[0] . author==(*ptrst) . author==->author

ptrst+1 көрсеткіші masking[1] - ге сілтейді.

Айта кету керек, осы мысалда ptrst+1 көрсеткішіне 45-ні қосады, себебі ААА типті кез-келген құрылым 47 байт орын алады.

Құрылым адресі функция аргументі ретінде қолданылатын мысалды қарастырайық.

struct ZP

{ char *name;

Char *MEC;

float NACH;

float PREM; } SOTR={“Зуев П”, ”январь” 1020. 45, 250. 15 };

main()

{ float s, fadd() ;

Printf (“П. Зуевқа қаңтар айында барлығы %6. 2a тенге берілде \n”, fadd(&sort) ) ; }

float fadd (ptrst)

struct zp *ptrst;

{ float s=0;

& операциясы құрылым адресін алу үшін қолданрылып отырғанын ескерте кеткенді жөн көрдік, Массив атынан айырмашылығы, құрылым аты өздігінен өз адресінің синонимы бола алмайды. Құрылымдар массивін қарастырайық. Массив аты оның адресінің синонимы бола алады, сондықтан, оры функцияға бере аламыз.

struct zp

{ char *name;

char *MEC;

float NACH;

float PREM; } sort[6] ={ {“Зуев П. ”, ”қаңтар”, 8020. 45, 1250. 15},

.

Inf[9] . fam-массивтің оныншы элементі

(inf[1] - құрылымдық айнымалы аты)

#include<stdio. h>

#define num 10

Struct sved

{ char fam[25] ;

char adr[20] ;

int gr; };

main()

{ struct sved inf[num] ;

int 1=0, i;

while (1<num)

{ printf(“Фамилияңды енгіз \n”) ;

gets (inf[1] . fam ) ;

printf(“Адресінді енгіз: \n”) ;

gets (inf[1] . adr) ;

printf(“Туған жылың \n”) ;

scanf(“%d”, &inf[1] . gr) ;

1++; }

Printf(“Группа студенттері жайлы ақпарат \n”) ;

For(i=0; i<1; i++)

Printf(“%s, %s, %d\n”, /n”, inf] i] . fam, inf[i] . adr, inf[i] . gr) ; }

Кірістірілген құрылымдарды қарастырайық

#include <stdio. h>

# define num 5

#define len 15

#define is “Ғылым”

Struct isd

{ char namisd[len] ;

int godisd; }

struct knig

{ char author[len] ;

char title[len] ;

struct isd isdat; }

main()

{ static struct knig masking[num] ={{“Петров В. ”, “Ақпараттану”

{“Ғылым”, 1998}},

{“Савельев В. ”, “Физика”,

{“Ғылым”, 1985}}};

int I;

for (i=0; i<num; i++)

if (masking[i] . isdat. nanidd==IS)

printf (“%s %s \n”, masking[i] . author, masking[i] . title) ; }

{“Потапов М. ”, ”қаңтар”, 6000. 50, 1500. 20}};

main()

{ float ITS, fadd () ;

Printf(“қызметкерлер тобына каңтар айы бойынша барлығы %10. 2f тенге берілді\n”, fadd(sort) ) ; }

float fadd (ptrst)

struct zp *ptrst;

{ float ITS;

int I;

for (i=0, ITS=0; I<6; i++; ptrst++)

its+=ptrst->nach+ptrst->prem;

return (ITS) ; }

Қолданылған әдебиеттер:

Е. М. Демидович “Основы алгоритимизаций и програмирования”

В. В. Подбельский “Практикум по програмировию на языке Си”

Есептер

1) . a, b, c, d кескіндері берілген. Осы кескіндерден үш үшбұрыш жаса және аудунын табу керек. Үшбұрыштың ауданы s= √p*(p-x) (p-y) (p-z), және p=x+y+z/2

#include<conio. h>

#include<math. h>

#include<stdio. o>

int jan (int a, int b, int c, int d)

{if (return p=x+y+z/2; s=sqrt(p*(p-x) (p-y) (p-z) ;

}

void main()

{ int a, b, c, d;

puts(“a, b, c, d, -енгіз:”) ;

for(: i<n, i++)

for(: j<n, J++)

scanf(“%d, %d, %d, %d”, &a, &b, &c, &d) ;

print(“%”jan(a, b, c, d) ;

getch () ;

}

2) . Екі өлшемді массив берілген. Осы массивтегі әр бағандағы тақ элементтердің қосырдысын табу керек.

#include<conio. h>

#include<math. h>

#include<stdio. o>

#define n 3

#define m 4

void main()

{ int a[m] [n] ; int i=0, j=0, s;

puts(“massiv elem engiz:”) ;

for( j<n; j++)

{

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Обьектілі - бағытталған программалау негіздері
СИ бағдарламалау тілі және жобалануы туралы
СИ тіліндегі символдық функциялар мен процедуралар
СИ бағдарламалау тілі және жобалануы
Препроцессор директивалары
СИ тіліндегі файлдар және мәтіндік файлдар
Си тілінің пайда болу тарихы мен мүмкіндіктері
С тіліндегі кластар және олардың түрлері
STRUCT операторын қолдана отырып тестілеуші программа құру
СИ тіліндегі функциялар
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz