7. Чизиқли жараёнларни дастурлаш
Download 478.36 Kb.
|
С да дастурлаш 1 кисм 1 семестр
- Bu sahifa navigatsiya:
- 17.2. Структура эълон қилиш ва хотирадан ажратиладиган жой Структурани эълон қилиш учун struct
- 17.3. Бит майдонлар, уларга ишлов бериш
- 17.4. Структура элементларига мурожаат
Бу жадвалнинг ҳар бир сатри ҳар хил тоифадаги алоҳида элементлардан тузилган. 1. Тартиб рақами – бутун сонларда 2. Фамилияси ва исми – белгили сатрларда 3. Семестр натижаси – бутун сонларда Бу маълумотларни бир гурухга, структурага бирлаштириш мумкин. Қуйидагича белгилашлар киритамиз: Semestr – структуранинг номи; n – тартиб рақами; fio – фамилияси ва исми; sem_nat – семестр натижаси. 17.2. Структура эълон қилиш ва хотирадан ажратиладиган жой Структурани эълон қилиш учун struct хизматчи сўзидан фойдаланилади. struct структура_номи { тоифа_1 ўзгарувчи_1; тоифа_2 ўзгарувчи_2; ...... тоифа_n ўзгарувчи_n; }; Структура орқали янги маълумотлар тоифаси ҳосил қилинади. Дастурда структуралардан фойдаланиш шу тоифадаги ўзгарувчи эълон қилиш орқали амалга оширилади. Юқоридаги мисол учун структура эълон қилиш қуйидагича амалга оширилади. struct Semestr { int n; //тартиб рақами char[50] fio; //Фамилияси ва исми int sem_nat; //семестр натижаси }; Структура элементлари (майдонлари) дастурда оддий ўзгарувчилар каби эълон қилинади ва ишлатилади. Мисол учун, юқорида эълон қилинган структурамиздан ўзгарувчи эълон қиламиз. Semestr t; Структура учун ажратилган жой ҳажмини қуйидаги амаллар ёрдамида аниқлаш мумкин: sizeof (структурали_тип_номи); sizeof (структура_номи); sizeof структура_номи. Охирги холда структура номи ифода деб каралади. Ифоданинг типи аниқланиб, хажми хисобланади. Мисол учун: sizeof (struct goods); sizeof (tea); sizeof coat; Мураккаб типлар яъни массивлар ва структурали типлар учун хотирага талаб уларнинг таърифига боғлиқдир. Масалан, double array[10] таъриф хотирадан 10*sizeof байт жой ажратилишига олиб келади. struct mixture { int ii; long ll; char cc[8]; }; Бу таъриф хар бир Struct mixture типидаги объект хотирада sizeof(int)+sizeof(long)+8*sizeof(char) байт жой эгаллашини кўрсатади. Объект аниқ хажмини қуйидаги амал хисоблайди: sizeof(struct mixture); 17.3. Бит майдонлар, уларга ишлов бериш Разрядли майдонлар структуралар ва бирлашмалар майдонларининг хусусий холидир. Разрядли майдон таърифланганда унинг узунлиги битларда кўрсатилади (бутун мусбат константа). Мисол: #include using namespace std; struct { int a:8; int b:6; } xx={64,64}; int main() { cout< return 0; } Натижа: 64 0 Разрядли майдонлар ихтиёрий бутун типга тегишли бўлиши мумкин. Разрядли майдонлар адресини олиш мумкин эмас. Хотирада разрядли майдонларни жойлаштириш компилятор ва аппаратурага боғлиқ. 17.4. Структура элементларига мурожаат Конкрет структуралар таърифланганда массивлар каби инициализация килиниши мумкин. Масалан complex sigma ={1.3;12.6}; goods coats={"пиджак",40000,7.5,220, "12.01.97"}; Бир хил типдаги структураларга қиймат бериш амалини қўллаш мумкин: Complex alfa; alfa=sigma; Лекин структуралар учун солиштириш амаллари аникланмаган. Структуралар элементларига қуйидагича мурожаат килиш мумкин: Структура_номи.элемент_номи 'Нуқта амали' структура элементига мурожаат килиш амали дейилади. Бу амал қавс амаллари билан бирга энг юқори устиворликка эгадир. Мисол: Complex alfa={1.2,-4.5},betta={5.6,-7.8},sigma; Sigma.real=alfa.real+betta.real; Sigma.imag=alfa.imag+betta.imag; Конкрет структуралар элементлари дастурда алохида киритилиши ва чиқарилиши зарурдир. Қуйидаги мисолда хизматчи структураси киритилади: #include using namespace std; struct employee { char name [64]; long employee_id; float salary; char phone[10]; int office_number; } worker; void show_emploee(employee worker) { cout << "Ismi: " << worker.name << endl; cout << "Telefon: " << worker.phone << endl; cout << "Nomer: " << worker.employee_id << endl; cout << "Oylik: " << worker.salary << endl; cout << "Ofis: " << worker.office_number << endl; }; int main() { worker.employee_id = 12345; worker.salary = 25000.00; worker.office_number = 102; cout<<"\n ismi:"; cin>> worker.name; cout<<"\n telefon:"; cin>>worker.phone; cout< return 0; } Download 478.36 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling