Информатика пәнінде олимпиадаға келген есептер бәрімізге мәлім, күрделі болады. Әрине мен басқа да пән олимпиадаларындағы тапсырмалар оңай деуден аулақпын, бірақ информатикадан берілген кейбір есептердің шарты бойынша оқушы математика, физика, химия пәндерін өте жетік меңгеруі керек.
Олимпиадаларда келетін есептерді шығару үшін оның программасын жазу алдында, есептің математикалық, логикалық моделін құрып алу қажет, одан да бұрын оқушы есептің шартын, яғни есепте не сұрап тұрғанын дұрыс түсініп алу керек. Жоғарыда айтылған екі шарттарды орындағаннан кейін ғана программа құруға кірісуге болады. Берілген есептердің шығару жолдары көп болғандықтан, олимпиадаға қатысушы есепті шығару алгоритмін орындаушыға (компьютерге) жүктемесін мейлінше оңайлатып жазуға тырысу керек. Есептерді ең тиімді жолдармен шығару үшін олимпиадаға қатысушыдан және оның ұстазынан үлкен тәжірибені, аса білгірлікті және көп еңбекті талап етеді.
Төменде өзімнің тәжірибемнен информатика пәнінен мысалдар ретінде бірнеше есептерді шығарып, шығару жолдарын жете талдауға тырысып көрдім.
1 - мысал. Жазықтықта радиусы R, центрі (X0; Y0) нүктесінде орналасқан шеңбер және координаттары (X1; Y1), (X2; Y2),......., (Xn; Yn) болатын n нүктелер жатыр. Берілген шеңбердің ішінде неше нүкте жатқанын анықтаңыздар. Барлық нүктелердің координаттары нақты сандар.
Енгізу файлында: бірінші қатарда R, X0, Y0 сандары, екінші қатарда n саны, ал қалған n қатарда n нүктелердің координаттары жазылады.
Шығару файлында: шеңбердің ішіне енетін бір бүтін сан - шеңбер ішінде жатқан нүктелер саны немесе егер, бірде - бір нүкте шеңбер ішіне енбесе шеңбер ішінде нүкте жоқ деген мәтін шығу керек.
Берілген есепті шығармас бұрын біз координаталық жазықтықтағы шеңбер теңдеуінің формуласын білуіміз керек. Радиусы R және центрінің координаталары (X0; Y0) болатын шеңбердің теңдеуі (X - X0) 2+(Y - Y0) 2=R2 екендігі белгілі болса, онда координаттары мына теңсіздікті (X - X0) 2+(Y - Y0) 2max then begin max:=j2; a1:='jasyl' end;
assign(f, 'c:\mysal3out. txt');
rewrite(f);
write(f, max, ' - ', a1);
close(f);
end.