10.1 Құрылымдар туралы мағлұмат
Көптеген бағдарламалау тілдерінде массивтерден кейін деректерді сипаттаудың келесі түрі - құрылымдар қолданылады, ол әр түрлі типтегі айнымалыларды біріктіретін деректер типі ретінде қарастырылады.
C# тілінде құрылым дегеніміз - класс типіндегі деректер сипаттамасының форма, бірақ кейбір шектеулері бар.
Сонымен қатар құрылымда класс сияқты әр түрлі типтегі деректер өрісімен қатар осы өрістермен жұмыс жасайтын әр түрлі әдістер, конструкторлар бола алады.
Құрылымда класқа қарағанда өзі бағынатын немесе өзіне бағынышты құрылым болмайды, бірақ Object класының әдістеріне ие.
Құрылымда біріктірілген айнымалылардың саны мен құрамы компьютер жадысының көлемімен ғана шектеледі. Әдетте құрылымда айнымалылар объект немесе процесске сәйкес біріктіріледі. Мысалы, тауар сипаттамасы, адам, технологиялық процесс, биржадағы ставкалар динамикасы туралы деректер, т.б.
Құрылым келесі пішімде анықталады:
[атрибуттар][спецификаторлар] struct құрылым_аты [:интерфейстер]
{ құрылым_денесі }
мұнда,
атрибуттар – құрылым туралы қосымша ақпаратты береді;
спецификаторлар – әдетте құрылымды қолдану шарттарын анықтайды;
интерфейстер – құрылым пайдалана алатын базалық кластар (өрістері жоқ):
құрылым денесі – құрылым элементтерінің құрамын анықтайды.
Құрылымды жариялау класты жариялауға өте ұқсас, бірақ екі айырмашылық бар: class сөзінің орнына struct сөзі қолданылып, міндетті емес интерфейстер тізімі көрсетіледі.
Құрылым денесіне айнымалылар және олардың типтері жазылады. Айнымалы әдетте құрылым өрісі болып аталады. Мысалы, студент туралы жазбаны дайындағанда бойы, салмағы, аяқ киім өлшемі, көзінің түсі сияқты сипаттамалар керек болуы мүмкін. Осы сипаттамаларды құрылымда жазайық:
struct stydent
{
public string name, cvet_gl;
public int rost, ves, god_roj;
public float raz_ob;
};
stydent styd = new stydent();
Осы мысалда жазба (styd) типіндегі бір айнымалы және жазба өрістеріне арналған түрлі типтегі алты айнымалы жарияланған:
stуd.name – жолдық айнымалы;
stуd. rost, ctуd.ves, stуd.god_roj – бүтін типтегі айнымалы;
stуd.raz_ob – нақты типтегі айнымалы;
stуd.cvet_gl – жолдық айнымалы.
Бағдарламалауда нақты жазба өрістерін қолданғанда осылай құралған атауды (айнымалы атауы, нүкте символы, өріс атауы) қолдану керек. Мысалы, оларға мәндерді меншіктеу:
styd.name = " Makanov";
styd.cvet_gl = "kara";
styd.rost = 173;
styd.ves = 68;
styd.raz_ob = 27.5;
styd.god_roj = 1986;
Келесі мысалды қарастырайық. Студент типіндегі жазбаны анықтау, мәндерді енгізу, студент туралы мәліметтерді шығару керек.
Бағдарлама коды:
using System;
namespace ConsoleApplication1
{
class Program
{
struct stydent
{
public string name, cvet_gl;
public int rost, ves, god_roj;
public double raz_ob;
};
static void Main()
{
stydent styd = new stydent();
Console.WriteLine("Stydenttin ati {0}", styd.name);
Console.WriteLine("Kozinin tysi {0}", styd.cvet_gl);
Console.WriteLine("boi yzindigi {0}", styd.rost);
Console.WriteLine("tygan jili {0}", styd.god_roj);
Console.WriteLine("sakmagi {0}", styd.ves);
Console.WriteLine("Kiim olshemi {0}", styd.raz_ob);
Console.WriteLine();
styd.name = "Makanov";
styd.cvet_gl = "kara";
styd.rost = 173;
styd.ves = 68;
styd.raz_ob = 27.5;
styd.god_roj = 1986;
Console.WriteLine("Stydenttin ati {0}", styd.name);
Console.WriteLine("Kozinin tysi {0}", styd.cvet_gl);
Console.WriteLine("boi yzindigi {0}", styd.rost);
Console.WriteLine("tygan jili {0}", styd.god_roj);
Console.WriteLine("sakmagi {0}", styd.ves);
Console.WriteLine("Kiim olshemi {0}", styd.raz_ob);
Console.WriteLine();
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
Stydenttin ati
Kozinin tysi
boi yzindigi 0
tygan jili 0
sakmagi 0
Kiim olshemi 0
Stydenttin ati Makanov
Kozinin tysi kara
boi yzindigi 173
tygan jili 1986
sakmagi 68
Kiim olshemi 27,5
Enter pernesin basiniz
Жазба өрістерін экранға шығару өрістерге «нөлдік» мәндер меншіктелетінін көрсетеді.
Деректерді жазбаға біріктіру оларды деректердің басқа құрылымдарында қолдануға мүмкіндік (мысалы, массивте, файлдарда) береді.
Достарыңызбен бөлісу: |