Бұларды компьютер жадына екі өлшемді массив түсінігін қолдана отырып енгіземіз. Массивтегі элемент орны екі индекспен анықталады. Олар жол мен баған нөмерін көрсетеді. Индекстер жеке тік жақшаға алынады. Мысалы: A[7][6], D[56][47].
Екі өлшемді массив бір өлшеемді массивке ұқсас толтырылады: пернетақтадан енгізу және меншіктер операторы арқылы. Мысалы, мына төмендегі программаның орындалуының нәтижесінде:
void main()
{
int A[20][20];
for(int i=0; i<3; i++)
for(int j=0; j<2; j++)
A[i][j] = 456 + i;
}
Массив элементтері A[1][1] = 457; A[1][2] = 457; A[2][1] = 458; A[2][2] = 458; A[3][1] = 459; A[3][2] = 459 мәндеріне ие болады.
Сипаттау бөлімінде массив аты, тік жақшада индектің максимальді мәні көрсетіледі.
Инжинерлік, математикалық есептеулерде екі өлшемді массив жиі қолданылады.
Есеп 6.Бүтін сандардан тұратын квадрат матрица берілген. Әрбір жолдағы ең үлкен элементті тауып, оны бас диагональда орнласқан элементтермен алмастыру.
#include void main()
{
int A[15][15], n;
cout << "Масивтегі элемент санын енгіз: ";
cin >> n;
for(int i=0; ifor(int j=0; j{
cout << "A[" << I << "][" << J << "] ";
cin >> A[i][j];
}
for(i=0; i{
int max = A[i][1];
int ind = 1;
for(int j=2; jif(A[i][j]>max)
{
max = A[i][j];
ind = j;
}
int vsp = A[i][i];
A[i][i] = A[i][ind];
A[i][ind] = vsp;
}
for(i=0; i{
cout << "\n";
for(int j=0; j{
cout << A[i][j] << " ";
}
}
}
С++ жолдар С++ тілінде Pascal тіліндегі жолдармен жұмыс істеуге арналған арнайы тип жоқ. Бірақ, соңғы элемент жолдың соңын білдіретін "\0" маркері бар символдар массиві қолданылады. Тек осы жағдайда бір өлшемді массив жол қызметін атқарады. Осы кезде бұл қасиетті жолды экран бетіне шығару кезінде немесе жолдармен жұмыс кезінде cout << stroka операторын қолданамыз.
char stroka1[] = {"Бұл жол\0"};
char stroka2[3] = {'A','c','\0'};
char stroka3[100];
Жолдармен жұмы істеу барысында string.h кітапханасын қосамыз.
strcpy(str1,str2); - str1жолынstr2ге көшіру, str1 > str2! strcat(str1,str2); - str1 + str2 жолдарын біріктіру.
strlen(str1,str2); - жол ұындығы
strcmp(str1,str2); - жолдарды салыстыру (егер нөлге тең болса, онда бірдей).
strncpy(str1,str2,n); - n символды str1денstr2ге көшіру
strndel(str1,n); - n символды str1ден өшіру
Өз бетінше орындауға арналған тапсырмалар №1. 5 элементтен тұратын бір өлшемді массив берілген. Мәні нөлге тең емес элементтер санын есептеңіз.
№2. 5 элементтен тұратын массивтің ең кіші элементін табуға арналған программа құрыңыз. Шығарылуы төмендегідей болуы керек:
№3. 10 элементтен тұратын массив элементтерінің нөлден басқа элементтерінің арифметикалық ортасын есептейтін программа құрыңыз. Шығарылуы төмендегідей болуы керек:
№4. Екі өлшемді массив берілген. Массивтің әрбір баған элементтерінің қосындысын табыңыз.
№5. Екі өлшемді массив берілген. Массивтің әрбір жолдағы оң элементтерінің қосындысын табыңыз.
№6. Сіздің аты жөніңізді сұрап, сізбен амандасатын программа құрыңыз. Программа мәтіні төмендегідей болуы керек:
Атыңыз бен фамилияңызды енгізіңіз:
Марченко А.И., марченко Л.А. Программирование в среде Turbo Pascal 7.0. Киев: ВЕУ, 2000
Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс. –СПб: Питер, 2001
irbis.vkgu.kz/portal/downloads/po5 d6f98.ppt
Практикалық жұмыс №5
Қосалқы программалар
Жұмыстың мақсаты: Студенттерге қосалқы программалар жайында түсінік беріп, алған білімдерін зертханалық есептер шығару барысында қолдану дағдыларын қалыптастыру.
Жұмыс барысы:
Кейбір есептерді шығару кезінде алдыңғы жазылған программаларды қолдану керек болады. Алдын-ала жазылған және бүкіл құрылымымен басқа алгоритмдерде қолданылатын алгоритмдер көмекші алгоритм деп аталады. Көмекші алгоритмдерді қолдану кезінде есепті бөліктерге бөліп, оны құрылымдауға болады.
Барлық программалар шартты түрде 2 бөлікке бөлінеді: негізгі және көмекші. Негізгі бөлікте ақпаратты қарапайым өңдеу жүргізіліп, түрлі көмекші модульдерге (көмекші программалар) қатынасулар ұйымдастырылады.
Көмекші алгоритмдер басқа да көмекші программаларды шақыра алады. Көмекші және негізгі алгоритмдер деп бір-біріне қатынасы бойынша аталады.
Көмекші алгоритмдерді қолдану кезінде кіріс ақпараттар мен шығыс ақпараттардың алмасу тәсілін есепке алу керек. Көмекші алгоритмдердің аргументтері - сәйкес есепті шешуге арналған кіріс ақпараттар орналасқан айнымалылар. Көмекші алгоритмдердің нәтижесі — осы есеп нәтижелері орналасқан айнымалылар.
Қосалқы программалар 2 түрде бола алады: параметрсіз қосалқы программа және параметрлі қосалқы программа. Қосалқы программаны шақыру негізгі программаның немесе басқа қосалқы программаның кез-келген бөлігінен жүзеге асады.
Қосалқы программалар жұмыс істеген кезде формальді және негізгі параметрлер түсінігі маңызды болып табылады. Формальді параметрлер — қосалқы программалардың кіріс ақпараттарының идентификаторлары болып табылады. Егер формальді параметрлер қандай да бір нақты мәнді алатын болса, онда олар негізгі параметрлер деп аталады. Формальді параметрлер нақты мәнді сол қосалқы модульге қатынасуы кезінде алады. Жазбаның типі мен реті формальді параметрмен бірдей болуы тиіс. Кері жағдайда программаның жұмыс нәтижесі болмайды. Негізгі параметрлер қосалқы программаны шақыру кезінде қолданылса, формальді параметрлер негізгіден қосалқы программаға қатынасу кезінде қолданылады.
Параметрлі қосалқы программалар қайталанатын әрекеттерді түрлі мәндер алу кезінде бірнеше рет шақыру кезінде қолданылады.
Параметрлі қосалқы программаларды құру кезінде келесі ережелерді есте сақтаған жөн:
1) әрбір қосалқы программаның аты мен формальді параметрлер тізімі бар;
2) негізгі программа процедураны шақыру командасы арқылы шақырады, ол формасы жағынан орындау командасынан ерекшеленбейді. Нәтиже бір немесе бірнеше айнымалыға меншіктеледі.
Мысал 1.Екі натурал санның ең үлкен ортақ бөлгішін табу алгоритмін көмекші программа көмегімен құрыңыз. Бөлшекті есептеу программасы қосалқы программада жазылады (a, b, c, d — натурал сандар). Нәтижені қысқартылмайтын бөлшек түрінде шығарыңыз. Қосалқы программа. M, N натурал сандарын енгіз.
Егер M=N болса, онда п.5-ке өтіңіз, әйтпесе келесі пунктке өтіңіз.
Егер M>N, онд M:=M-N, әйтпесе N:=N-M.
п. 2-ге бар.
M мәнін негізгі программаға қайтару.
Қосалқы программа соңы.
Негізгі программа. A, B, C, D мәндерін енгіз.
E:=A*D - B*C.
F:= B*D.
Егер E=0, E мәнін шығарып, п. 9-ға өтіңіз, әйтпесе келесі пунктке өтіңіз.
M:=|E|, N:=F, ЕҮОБ табу үшін қосалқы программаға өтіңіз.
G := M.
E және F-ті бүтіндей G-ға бөлу.
E және F мәнін баспаға шығрау.
Программа соңы.
// ЕҮОБ программасы
#include #include Void Nod(int m, int n, int &k);
void main()
{ int a, b, c, d, g, e, f;
cout << "бөлшектің алымы мен бөлімін енгіз:";
cin >> a >> b >> c >> d;
e = a * d - b * c;
f = b * d;
if (e==0)
cout << "Жауабы: " << e;
else
{
Nod(fabs(e),f,g);
e = e / g;
f = f / g;
cout << "жауабы: " << e << "/" << f;
}
}
void Nod(int m, int n, int &k)
{
while (m != n)
if (m > n) m -= n; else n -= m;
k = m;
}
Мысалдан көріп отырғанымыздай, қосалқы программа функциясын сипаттау функция прототиптерін сипаттау бөлімінде жүзеге асады, ал жүктеу main негізгі функциясынан кейін орындалады. Қосалқы программаның тақырыбында формальді параметрлер мен олардың типтері көрсетілген, оларды шартты түрде кіріс және шығыс мәндер етіп бөлуге болады (олардың алдында & тұр). & белгісі бар параметрлер орындалғаннан кейін жойылып кетеді. & таңбасы айнымалы көшірмесін емес, өзін қолдануды нұсқайды. Функцияны шақыру кезінде оның аты мен формальді параметрлер тізімі көрсетіледі. Формальді және негізгі параметрлер саны мен типі жағынан сәйкес келуі тиіс.
С++ - те функцияларды сипаттау келесі түрде жүзеге асады: