С тіліндегі массивтер түсінігі


1 С++ тіліндегі массивтер 1. 1 Массив түсінігі

Пакаль тілінде типтер қарапайым және күрделі болып бөлінеді. Қарапайым типке - стандартты, саналатын, шектейтін типтер жатады. Күрделі типке массивтер, жиындар, жазулар, жолдар және файлдар жатады. Күрделі типтің элементтері қарапайым немесе күрделі типтер болуы мүмкін. Күрделі типті еңгізу программаны күшейтеді және күрделі есептерді шешуге мүмкіндік береді.

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

Паскаль тілінде жеке айнымалыларды ғана өңдеп қоймай, анйымалылардың жиынын, тобын да өңдеуге болады.

Массив дегеніміз - бір типтегі берілгендер жиыны. Басқаша айтқанла, массив - бір атауға біріктірілген айнымалылардың реттелген тізбегі. Айнымалылардың массив элементтерінің типтері бірдей болады. Массив бір ғана атпен беріледі. Сөйтіп, Паскаль тіліндегі массив ұғымы алгоритмдік тілдегі кесте ұғымына сәйкес келеді.

Индекс типі стандартты, бүтін немесе нақты тип бола алмайды. Программада «индекс» және «индектің типі» ұғымдарын шатастыруға болмайды.

Индекс типі массивті бейнелегенде пайдаланылса, индекс массив элементтерін белгілеу үшін операторлық бөлікте пайдаланылады. Индексті бейнелегенде қандай тип берілсе, индекс сол типте ғана болуы тиіс.

Индекс өрнек, айнымалы немесе тұрақты болып берілуі мүмкін.

Сондықтан да көп жағдайларда массивтерді индекті айнымалылар деп те атайды. Ал индекссіз айнымалыларды массивтерден ажырату үшін қарапайым айнымалылар дейді. Базалық типтегі айнымалыларға қандай амалдар қолданылса, массив элементтеріне де сондай амалдар қолдануға болады.

Егер массив атауында бір ғана индекс болса, онда ол массивті бір өлшемді, ал екі индекс болса - екі өлшемді және т. с. с. n индексті болса, n өлшемді массив дейді. Бір өлшемді массив элементтері вектор, ал екі өлшемді массив элементтері матрица деп аталады.

Массив элементтерін кездейсоқ сандармен де еңгізуге болады. Массивтерде қолданылатын амалдар:

  • Массивті толтыру;
  • Массив элементтерін алмастыру;
  • Массив элементтерін өшіру;
  • Массивке элементтер қосу;
  • Массив элементтерін сұрыптау;
  • Массивтерді түрлендіру.

ЭЕМ-нің жадында сандардың бір-бірімен байланысқан көптеген мәндерін сақтау үшін индексті айнымалылар, яғни массивтер қолданылады. Массив дегеніміз - бірыңғай шамалар тізбегінің бір атаумен аталып реттелген жиыны.

Математикадағы вектор, матрица осы массивке мысал бола алады. Тізбектің айнымалылары бір индексті элементтерден тұрса, онда бір өлшемді массив болады. Олардың индекстері сандармен немесе белгілі бір әріптермен жақша ішінде жазылады. Мысалы: A(1), C(12), K(100) . Массивпен жұмыс істеу үшін оның әр элементінің мәні белгілі болуы тиіс. Сондай-ақ массивтің идентификаторы /аты/ да жай айнымалының идентфикторы сияқты белгіленеді.

Паскаль тілінде массивтің номері /индексі/ тік жақшаға алынып, жазылады, мысалы: 1, 6; 4, 9; 5; 8, 9; 0, 47 - мәндерінен тұратын A массивін былай жазамыз: A[1] =1, 6; A[2] =4, 9; A[3] =5; A[4] =8, 9; A[5] =0, 47. Егер есептеу барысында A1, A2, A3, … A25 массиві кездессе, онда оны программа барысында A[25] түрінде жазамыз. Мұндағы A-массив аты болады, 25-оның индексінің қабылдайтын ең үлкен мәні болып есептеледі.

Паскаль тілінде массивті программада қолдану үшін алдымен оларды міндетті түрде арнаулы ARRAY /ағылшын тілінен аударғанда - массив/ - операторы арқылы сипаттап жазу керек. Ол айнымалы - VAR немесе TYPE - тип бөлігінде көрсетіледі. VAR арқылы жазылуы:

VAR массив аты: ARRAY [бастапқы номері. . соңғы номері] OF типі;

Көп жағдайда массивтің номері /индексі/ 1-ден басталады, бірақ бұл міндетті емес. Сондай-ақ массив символдық типтен де тұрады. Символдық жол - STRING үшін массив келесі түрде өрнектеледі:

TYPE

STRING: ARRAY [0 . . . 255] OF CHAR;

Массивтің номерінің санына қарай қанша элементті массив екенін байқауға болады. Егер бірнеше массивтер бірыңғай типті және элементтер саны тең бола, онда оларды программада бір жолда сипаттауға болады, мысалы:

VAR A, B, C: ARRAY [1. . 25] OF REAL;

Мұнда A, B, C - массивтерінің мәндері 25 элементтен тұратын нақты сандар.

A[1], A[2], A[3], …, A[25],

B[1], B[2], B[3], …, B[25],

C[1], C[2], C[3], …, C[25] .

Паскаль тілінде мссивтер араында «тең», «тең емес» немесе «меншіктеу операторы» амалдарын қолдануға болады. Мысалы, егер А және В массиві былау берілсе:

VAR

A, B: ARRAY [1. . 10] OF REAL;

Бұған үш амалды қолданғанда төмендегідей нәтиже береді:

Өрнек Нәтиже

  • А=B Егер әрбір А массиві элементінің мәні сәйкесВ В массиві элементтерінің мәніне тең болса.
  • А<>B Егер А массиві элементінің ең болмағанда бір мәні сәйкес В массиві элементінің мәні тең болмаса.
  • A:=B В массиві элементінің барлық мәні сәйкес массиві элементінің мәні меншіктеледі В массиві элементінің мәндері өзгеріссіз қалады.
1. 2 Массивтермен жұмыс

Массив (array) бір классқа жататын объектілер тобын құрайды, сонымен бірге кез-келген объектіге оның жолда орналасуы бойынша қолдана аласыз. Мысалы, егер гимнасттар бір қатарда тұрса, бірақ сіз олардың аы-жөндерін білмесеңіз, олардың қатардағы жағдайына сай сөйлеген ыңғайлы: бірінші, екінші, үшінші . . .

Массивтердің қасиеттерін түсінген маңызды. Ең қарапайым жағдайды қарастырайық, бес гимнастты жаттығуларды жастақызатын бағдарлама жасау керек делік. Бұл бестікті құрдыңыз делік және келесі нұсқаулықтың көмегімен оларға: Athlete Julia, Andrea, Ricardo, Andy, Michael аттарын бердіңіз.

Содан соң сіз олардың әрқайсысына бір жаттығуды орындауға бұйрық беруге мәжбүрсіз:

JumpJack(Julia) ;

JumpJack(Andrea) ;

JumpJack(Ricardo) ;

JumpJack(Andy) ;

JumpJack(Michael) ;

Бұл әрине, өте қиын емес, бірақ егер гимнасттар саны жүз болса, мың болса қиын болары сөссіз.

Бұл мәселені шешудің стандартты әдісі гимнасттардың бүкіл тобына тау беріп, содан кейін нақты бір гимнасттың әрқайсысын бірінші, екінші, үшінші . . . деп атауда жатыр.

Бұл шамамен былай болады:

  • Бес гимнасттан тұратын топты Guy атауымен белгілеу
  • Индекстің (index) мәнін 1-ден 5-ке дейін қайталау;
  • Guy элементіне индекс позициясында жаттығуды орындау.

Циклдерді оқу бойынша біз білеміз, компьютер топтың барлық мүшелері жаттығуды орындау керектігін түсінеді, бірақ енді Guy массивінің қанша элементін қолданғыңыз келетініне қарамастан сізге кодтың мыңдаған жолын жазудың қажеті жоқ.

Енді бөлек гимнасттарға арналған бағдарлама мен гимнасттар массивіне арналған бағдарламан салыстырайық:

void mainprog() {

athlete Julia, Andrea, Ricardo, Andy, Michael;

JumpJack(Julia) ;

JumpJack(Andrea) ;

JumpJack(Ricardo) ;

JumpJack(Andy) ;

JumpJack(Michael) ;

}

void mainprog() {

athlete Guy[5] ; //Бес гимнасттан тұратын массивті жариялау

for (int which=0; which<=4; which++) {

JumpJack(Guy[which] ) ; //Жаттығуды әрбір гимнасттың орындауы

}

}

Біріншіге қарағанда соңғы бағдарламаға гимнастардың саны әсер етпейді (циклдің аяқталуы жағдайында айнымалының мәні ғана өзгереді) .

Сіз массивтің бір класстың объектілерінен тұратынын ұмытқан жоқсыз ба? Осылайша, қалауыныңызша сол бағдарламаны жүргірушілерге де қолдануға болады:

void mainprog() {

runner Guy[5] ; //Бес жүргізушілерден тұратын массивті жариялау

for (int which=0; which<=4; which++) {

Guy[int which] . run() ; //Әрбір жүргізушінің орын ауыстыруы

}

}

1. 3 Массивтерді қолдану

Кез-келген типтегі объектілер масситерін қолдануға болады: гимнасттардың, жүргізушілердің, роботтардың, шеңберлердің және тіпті қарапайым, мысалы массивтің элементтері болып int немесе float типтеріндегі айнымалылар бола алады. С++ тілінде массив элементтері индекстің бүтін мәндерімен (int) белгіленеді. Массивтің бірінші элементіне 0-ге тең индекс мәні, ал екіншісіне - 1 және т. б. мәндер қосылады.

Алдыңғы бағдарламада Guy массиві бес элементтен тұрды: Guy[0] - Guy[4] . Guy[5] элементі жоқ, себебі элементтер барлығы бесеу.

Массивті жариялау кез-келген басқа объектінің жариялауына ұқсас, бірақ массив атынан кейін тік жақшада оның элементтерінің саны көрсетіледі. Мысалы, келесі нұсқаулықты қарастырайық:

int points[10] ;

Бұл нұсқаулықта 10 бүтін элементтен тұратын (0-ден 9-ға дейін нөмірленген) points атауы бар массив жарияланады.

Келесі нұсқаулықта 12 элементтен тұратын (0-ден 11-ге дейін нөмірленген) measurements массиві жарияланады

float measurements[12] ; массив атауы элементтердің бүкіл тобын білдіреді. Соңынан тік жақшада индекстің мәні көрсетілген массив аты нақты бір элементті білдіреді. Мысалы, осы бөлімнің бірінші мысалы үшін идентификатор 10 элементтен тұратын топты білдіреді: points. Ал топтың нақты бір элементіне (екіншісіне) келесі белгі қолданылады: points[1] .

Өрнек бүтін болып қала бергенше оны индекс ретінде көрсетуге болады:

Guy[which] белгісі Guy массивінің нақты бір элементіне нұсқайды. Егер which өрнек мәні белгілі болса, бұл элементті оңай анықтауға болады.

Guy[which-1] белгісі Guy массивінің басқа бір нақты элементіне нұсқайды.

Алайды, индекстің мәні массивтің жоқ элементіне нұсқай алмайды. Guy[which] белгісінде which мәндерінің ауқымы 0 мен 4 (қоса) арасында қалуы керек. Кез-келген басқа мән массивтің шекарасынан шығып кетеді. Массивтер шекарасының бұзылуын С++-те программист бақылауы керек.

Бағдарламалардағы қателердің басты себебі индекске бұрыс мәнді қосуда жатыр. Өрнек индекс ретінде қолдану жиі кездеседі. Бірақ мұнда бағдарламаны орындау кезінде бұл өрнек қандай мәндерге ие болатынын білмеуіңіз де мүмкін. Мысалы, 10 элементтен тұратын List массивін жариялаңыз делік (0-ден 9-ға дейін нөмірленген) . Әрі қарай бағдарламада сіз келесі нұсқаулықты қолданасыз делік: list[(k-3) *j] =0; k және j айнымалыларының мәндері индекстің мәнін анықтайды (0 және 9-ды қосқандағы интервалда болуы керек) . Өз бағдарламаңызда k және j айнымалыларының мәндеріне әсер ететін барлық факторларды бақылай алмайтыңыз да мүмкін. Осылайша, өрнек орындау нәтижесі тік жақшада мыслаы, 13 мәні болуы мүмкін.

Массив элементтері компьютер жадысында кезекпен орналасқандықтан, компилятор List[-13] массиві элементінің орнын міндетті түрде табады және сонда нөлді орналастырады. Нәтижелер әр түрлі болуы мүмкін.

Өрнекте әдетте сандық массивтер қолданылады, оның элементтері мысалы int және float типі мәндерінің мандары болып табылады. Мұндай массивтің әрбір элементі сан болып табылатындықтан, оның мәні өрнекке қойылады.

Бағдарламаның келесі кескінін қарастырайық:

void mainprog() {

int value[10] ; //Он бүтіннін тұратын массивті жариялау

for (int index=0; index<=9; index++) {

value[index] =9-index; //Әрбір элементтің мәнін есептеу

}

}

Біз циклде 9-index өрнегін есептейміз және value[index] массивінің элементінде нәтижені сақтаймыз. Сәйкесінше, бұл кескінді орындағаннан кейін массив сандық мәндермен толығады, оларды содан кейін қайсыбір тәсілмен пайдалануға болады.

Мысалы, массивтің әрбір элементінің мәнінен ақпараттық қоршауда көрсетуге болады:

void mainprog() {

int value[10] ; //Он бүтін саннан тұратын масситі жариялау

for (int index=0; index<=9; index++) {

value[index] =9-index; //Әрбір элементтің мәнін есептеу

}

Box Sal;

for (which=0; which<=9; which++) {

Sal. say(value[which] ) ;

}

}

Біз массив элементін функция аргументі ретінде пайдаландық.

Массивтер және олардың элементтері сондай-ақ функцияның аргументтері бола алады. Мұнда қандай объектінің қандай типін қолданып жатқан білген жөн. Мысалы, келесі жариялауды қарастырайық: athlete Guy[10] ; Бұл жариялауды есепке алғанда келесі екі нұсқаулық әр түрлілікті білдіреді:

JumpJack(Guy) ;

JumpJack(Guy[1] ) ;

Бірінші нұсқаулық мүлдем қате. JumpJack() функциясында athlete типіндегі бар жоғы бір өлшем, бірақ Guy - бұл гимнасттардың массиві (athlete типіндегі объектілердің массиві), ал бір гимнастты Guy[1] аргументі білдіреді. Себебі функцияның бұл нұсқасы бір мезгілде тек бір объектіні сұрыптауға қабілетті. Сонда да біз JumpJack() функциясының тағы бір нұсқасын өлшем ретінде гимнасттар массивімен анықтай аламыз. Бұл жағдайда келесі нұсқаулық дұрыс: JumpJack(Guy) ;

Функцияның өлшемі массив болғанда, функцияның тақырыпты осы фактті көрсету керек. Мысалы:

void jumpjack(athlete eachone[10], int howmany_athletes) {

for (int i=0; i<howmany_athletes; i++) ; {

eachone[i] . ready() ;

eachone[i] . up() ;

eachone[i] . ready(0. ) ;

}

}

JumpJack функциясының бұл нұсқасын гимнасттар массивімен аргумент ретінде шақыруға болады. Егер гимнасттар саны үнемі болатынына сенімді болсаңыз, howmany_athletes аргументін алып тастауға болады.

Аталған жағдайда функция тақырыбында eachone массив болып табылатыны анық көрсетілген. Бұл компиляторға индекстер онымен байланысты болуы керек екеніне нұсқайды. Басқа бір қызықты факт - массивтің өлшемдерін бермеуге болады. Соңғысы жарияланғандықтан (бағдарламаның бір басқа жерінде), қайтадан оған жады аумағы (берілген жағдайда функцияда) бөлінбейді, себебі С++-те қалыпты жағдайда массивтер сілтеу бойынша беріледі. Функцияға тек eachone - бұл массив және индекпен жалғасуы мүмкін екеніне нұсқау керек.

Осылайша, функция тақырыбы келесідей бола алдады:

void jumpjack(athlete eachone[], int howmany_athletes)

c7jack. pp бағдарламасы

Массивті жаттығуларды орындайтын гимнасттар массивінің мысалында қолдану c7jack. cpp бағдарламасында көрсетілген.

//c7jack. cpp

//Массивтерді қолданудың иллюстрациясы

//31. 07. 1994

//

#include “franca. h”;

athlete Guy[7] ;

void jumpjack(athlete somebody) {

somebody. up() ;

somebody. ready() ;

}

void mainprog() {

for (int=0; i<7; i++) {

JumpJack(Guy[i] ) ;

Guy[i] . say(“Done!”) ;

}

}

Бұл бағдарлама гимнасттардың санына байланысты емес: біреу немесе бірнешеу. Айырмащылық ондай үлкен болмайды:

  • Элементтердің қажетті саны массивті жариялауда беріледі.
  • Цикл нөлден басталып массивтің соңғы элементітің мәніне дейін болуы керек.
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
С++ программалау тілінде Бір өлшемді массивтер. Сұрыптау
С++ тіліндегі массивтер
Екі өлшемді массивтер
Дәріс кешені с/с++ тілдері
Массив
Си программалау тілі
СИ тіліндегі динамикалық жады
Меншіктеу операторы, барлық тілде пайдаланылатын негізгі оператор
Turbo Pascal жүйесінде массивтерді ұйымдастыру технологиясы
СИ тіліндегі символдық функциялар мен процедуралар
Пәндер



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