(солға) пернелерін басу кезінде генереацияланатын 73,81,79,71 ScanCod-тары жылжуды жүзеге асырады.Бұл программада Case операторының денесіндегі Move әдісін шақыруға ерекше көңіл бөлу қажет.Бірнші төрт жағдайда (72,80,77,75) Dot1.Move әдісіне қатынас жасауға арналған, ал қалғанында Ring1.Move әдісіне қатынас жасалған.Дегенмен Move әдісінің жалғыз екенін білеміз, ол Dot объектісінде жарияланып, Ring объектісіне мұраға қалған. Басқа сөзбен айтқанда, 1 ғана Move әдісі әртүрлі жұмыс істейді(нүктені немесе шеңберді жылжытады).Бұл оны қандай объектінің шақырғанына байланысты.Обьъектілердің мұндай қасиеті полиморфизм деп аталады.
15-ДӘРІС. Объектілерді динамикалық құру.
-
Конструкторлар және деструкторлар.
-
Көрінбейтін өрістер мен әдістер.
Конструкторлар, динамикалық обьектілер және деструкторлар
Егер объектілік типте тым болмаса бір виртуалды әдіс болса, онда виртуалды әдіске бірінші қатынас жасағанға дейін объект экземплярына қолданылатын конструктор деп аталатын арнайы әдіс болуы керек.Осыған байланысты әдетте конструктор объектіге қандай да бір бастапқы мәндерді беретін әдіс ретінде көрсетіледі.Конструктор немесе ата-баба объектісінен мұраға қалады және де конструктордың өзі виртуалды әдіс бола алмайды.Объектілік типтің сипатталуында конструктордың тақырыбы кәдімгі әдіс тақырыбынан мынадай айырмашылықта болады. Ондағы procedure резервтелген сөздің орнына constructor сөзі қолданылады.Кәдімгі әдістен конструктордың қандай айырмашылығы бар?Конструктор онда сипатталған әрекеттерден басқа объектіленген виртуалды әдістерді жүзеге асыратын код адрестері бар арнайы виртуалды әдістер кестесінің арасында байланыс орнатады.Алдыңғы тақырыпта айтып өткендей, объектілік типтің экземплярлары статикалық және динамикалық түрде анықтама алады. Dot1 және Ring1 объект экземплярларының динамикалқ түрде құрылуы төмендегідей болады:
Var Dot1: ^Dot;
Ring1: ^Ring;
Begin
New (Dot1, Init);
New (Ring1, Init);
Жоғарыда айтылғандай, егер объектіде виртуалды әдістер бар болса, оларға қатынас жасамас бұрын осы объетінің экземпляры конструкторды шақыруы керек.Осындай конструктор ретінде мұнда Init әдісі тұр.Ол New процедурасының екінші параметрі ретінде шақырылып тұр.New рпоцедурасы объектінің динамикалық экземплярын құрады.Тақырыбы:
Procеdure New (var P:pointer[ ,Init:Constructor]);
Мұндағы, P – типтендірілген нұсқауыш; Init – объект конструкторы. Динамикалық объектімен жұмысты аяқтағаннан кейін, оған бөлінген жадыны босату керек.Бұл Dispose стандартты процедура арқылы жүзеге асады.
Dispose (Dot1,Done);
Dispose (Ring1,Done);
Мұнда Dispose процедурасы Done деструкторына қатынас жасайды. Dispose процедурасы объект орналасқан жадыны босатады.Тақырыбы:
Procedure Dispose (var P:Pointer[ ,Done]);
Мұндағы, P – типтендірілген нұсқауыш; Done – объект деструкторы.
Объектілік типтің сипатталуында деструктор тақырыбының кәдімгі әдіс тақырыбынан айырмашылығы – ондағы Procedure резервтелген сөзі Destructor сөзімен алмастырылады. Дегенмен конструкторға қарағанда деструктор резервтелген сөзі процедура сөзінің синонимі болып табылады.Басқа сөзбен айтқанда, объектімен жұмысты аяқтайтын әдіс арнайы резервтелген сөзбен безендіріледі.Және де конструктордан айырмашылығы – деструкторлар виртуалды әдіс ретінде көрсетіле алады.Мұнда Done деструкторын шақыру өздігінен динамикалық жадыны босата алмайтынын түсіну керек. Dot1 және Ring1 объектілерінің динамикалық түрде жарияланатынын көрсететін мысал:
Porgram ObjectDotCirc1;
Uses crt,graph;
Type
Dot=object;
A,b:integer;
Constructor Init(x,y:integer);
Procedure Show:virtual;
Procedure Hide:virtual;
Procedure Move (Da,Db:integer);
Destructor Done
End;
{-------------------------------------}
Ring=object(Dot);
Rad:integer;
Constructor Init(x,y,z:integer);
Procedure Show:virtual;
Procedure Hide:virtual;
Destructor Done;
End;
{-------------------------------------}
Constructor DotInit;
Begin
a:=x; b:=y;
end;
{-------------------------------------}
Procedure DotShow;
Begin
PutPixel(a,b,white);
{-------------------------------------}
Procedure Dot.Hide;
Begin
PutPixel(a,b,0);
End;
{-------------------------------------}
Procedure Dot.Move;
Begin
Hide;
a:=a+Da; b:=b+Db;
Show;
End;
{-------------------------------------}
Constructor RingInit;
Begin
a:=x; b:=y; Rad:=z;
end;
{------------------------------------}
Procedure RingShow;
Begin
SetColor(black);
Circle(a,b,Rad);
End;
{------------------------------------}
Procedure Ring;
Begin
SetColor(0);
Circle(a,b,Rad);
End;
{------------------------------------}
Destructor Dot.Done;
Begin
Hide;
End;
{------------------------------------}
Destructor Ring.Done;
Begin
Hide
End;
{------------------------------------}
Var i,j,k,Err:integer; a:char;
Dot1:Dot; Ring1:Ring;
Begin
i:=detect;
InitGraph (i,j,’ ‘);
Err:=GraphResult;
if Err <>grok then
writeln(Graph Error Msg(Err))
else
begin
New (Dot1.Init(GetMax x div 2;GetMax y div 2));
Dot1^Show;
New(Ring1.Init(GetMax x div 2;GetMax y div 2;GetMax y div 6));
Ring1^Show;
While KeyPressed do a:=ReadKey;
Repeat
Begin
A:=ReadKey;
Case ord(d) of
72:Dot1^Move(0,-5);
80: Dot1^Move(0,5);
77: Dot1^Move(5,0);
75: Dot1^Move(-5,0);
73: Ring1^Move(0,-5);
81: Ring1^Move(0,5);
79: Ring1^Move(5,0);
71: Ring1^Move(-5,0);
End; end;
Until a=chr(27);
Dispose (Dot1,Done);
Dispose(Ring1,Done);
End;
End.
Өрістер мен әдістер.
Жасырын және жалпы қатынасты өрістер мен әдістер
Объектілік типтің сипатталуындағы өрістер мен әдістер жасырын және жалпы қатынасты болып жарияланады.Объект сипатталуындағы сәйкес бөлімдер Private немесе Public директиваларымен ашылады.Алдыңғы мысалдағы Dot типінің сипатталуында осы директивалар төмендегідей қолданылады:
Dot=object;
Private
a,b:integer;
Public
Constructor Init(x,y:intrger);
Procedure Show:virtual;
Private
Procedure Hide:virtual;
Procedure Move (Da,Db:integer);
Public
Destructor Done;
End;
Бұл мысалда жасырын өріс ретінде а және b өрістері, және Hide және Move әдістері жарияланған.Ал Init,Show,Done әдістері жалпы қатынасты болып тұр.Әрбір кезекті Private немесе Public директивалары алдыңғысының әреккетін қайтарады.Егер типтің сипатталуында бұл директивалар болмаса, онда үнсіз келісім бойынша барлық өрістер мен әдістер жалпы қатынасты болып табылады. Private директивасынан кейін жарияланған объект өрістері мен әдістері осы прогерамманың немесе модульдің алдында ғана қатынас жасалады.Дегенмен,егер бұл объект программаға қосылған мдоульбе болса, жасырын өрістер мен әдістер идентификаторы программистке көрінбейді.Және де мұнда объектінің өзі қолдануға толық ашық болады.Мысалы, бұл егер коммерциялық қолданба болса, онда оны құрастырушылар бұл қолданбаны жүзеге асыру туралы мәліметтерді жасырады.Сол сияқты программист байқаусызда өзгеріс енгізбес үшін объектінің өрістері мен әдістеріне қатынасты шектеу дұрыс болады.
Бақылау сұрақтары
-
Бағдарламалау жүйелері туралы жалпы мәлімет.
-
Бағдарламалаудың типтік жүйелері.
-
Жұмыс істеу схемасы. Жасалатын бағдарлама құрылымы.
-
Бағдарламалау жүйесінің негізгі компоненттерінің нұсқалары.
-
Бағдарламалау парадигмалары. Бағдарламалау тілдерінің классификациясы.
-
Тurbo Раscal бағдарламалау жүйесі.
-
Паскаль тілінің негізгі элементтері. Алфавит. Резервтегі (түйінді) сөздер.
-
Айнымалылар. Тұрақтылар. Өрнектер. Операторлар.
-
Арнайы символдар.
-
Паскаль-бағдарламасының құрылымы.
-
Сипаттау бөлімдері. Айнымалыларды сипаттау. Тұрақтыларды сипаттау.
-
Орындалатын операторлар.
-
Меншіктеу операторы. Процедураларды шақыру.
-
Енгізу және шығару. Құрама оператор.
-
Құрылымдық операторлар. Шартты операторлар (if...then...else). Таңдау операторы (саsе...of..end).
-
Параметрлі цикл операторы (for...tо...dо... және for...downto...do).
-
Шарты басында тексерілетін цикл операторы (while...dо...). Шарты соңында тексерілетін цикл операторы (repeat.. .until).
-
Айнымалылардың алдын ала аныкталған типтері (қарапайым).
-
Типтердің иерархиясы. Қарапайым типтер.
-
Нақты. Бүтін. Символдық. Логикалық (бульдік).
-
Интервалдық (аралық тип). Саналатын.
-
Айнымалылардың алдын ала анықталган типтері (кұрылымдық).
-
Құрылымдық типтер.
-
Жолдық.
-
Массивтер.
-
Жиындар.
-
Символдық айнымалыларды және жолдарды өңдеу.
-
Символдық өңдеу.
-
Жолдық өңдеулердің стандартты процедуралары.
-
Мәтіннен сөзді ерекшелеу алгоритмі.
-
Көмекші программалар.
-
Көмекші программа-процедуралар.
-
Идентификаторлардың көріну аймағы.
-
Формальды және нақты параметрлер.
-
Параметрлер мәндер, параметрлер-айнымалылар және типтік емес параметрлер.
-
Көмекші программа-функциялар.
-
Паскальдағы деректердің пайдаланушы типтері.
-
Деректердің пайдаланушы типтерінің сипаттамасы.
-
Типтердің үйлесімділігі. Жазулар.
-
Бекітілген бөлігі бар жазулар.
-
Нұсқалы жазулар.
-
Паскальдагы графика.
-
Графика. Графикалық координаттар.
-
Мәтіндік және графиктік режимдер.
-
Мәтіндік және графикалық режимдер арасындағы ауысулар.
-
Графиканы бағдарламалау принциптері.
-
Графикалық режимді инициализациялау.
-
Графикалық қарапайымдарды шығару.
-
Graph модулінің процедуралары және функциялары.
-
Деректердің файлдық типтері.
-
Файлдармен жұмыс істеу.
-
Мәтіндік файлдар.
-
Типтік файлдар.
-
Типтік емес файлдар.
-
Нұсқама типтер және динамикалық жады.
-
Статикалық және динамикалық айнымалылар.
-
Айнымалылардың моделі.
-
Адрестер және нұсқамалар. Нұсқамаларды хабарлау.
-
Нұсқамаларды қолдану.
-
Динамикалық жады.
-
Динамикалық жадыларды ерекшелеу және босату.
-
Динамикалық жадылармен жұмыс істеу процедуралары мен функциялары.
-
Үйме администраторы.
-
Деректердің дннамикалық құрылымы.
-
Рекурсивтік деректердің типтері.
-
Байланысқан тізімдер.
-
Стектер. Кезектер. Дектер. Ағаштар.
-
Екілік ағаштардың негізгі амалдары.
-
Модульдік бағдарламалау.
-
Модульдердің құрылымы.
-
Модульдердің тақырыбы және модульдердің бір-бірімен байланысы.
-
Модульдің интерфейстік, орындалатын және инициалданатын бөліктері.
-
Модульдердің компиляциясы.
-
Объектіге арналған бағдарламалау (ОББ).
-
ОББ-ның негізгі принциптері.
-
Инкапсуляция. Мұрагерлеу. Полиморфизм.
-
Объектілік типті сипаттау. Виртуальды әдістер.
-
Объектілерді динамикалық құру.
-
Конструкторлар және деструкторлар.
-
Көрінбейтін өрістер мен әдістер.
ПАЙДАЛАНЫЛҒАН ӘДЕБТЕТТЕР ТІЗІМІ:
-
Бекмолдаева Р.,Айымбетова М. Турбо Паскаль тілінің графикалық мүмкіндіктері тақырыбын оқыту әдісі // информатика негіздері 2004 - №2.- 13-14б.
-
Беркімбаева Сәуле. Паскаль тілінде программалу негіздері:
-
Оқу әдістемелік құрал.- Алматы: Қазақ университеті, 2000.-70бет.
-
Дәулетқұлов А.Б., Алғазы С.С.."Паскаль" тілінде программалау негіздері: Алгоритмдеу және программалау.Методикалық құрал.-А, 2004.-37-147б.
-
Бөрібаев Б, Нақысбеков Б, Мадиярова Г. Информатика және есептуіш техника негіздері// Жалпы білім беретін мектептің 9-сыныбына арналған оқулық. Алматы.-2005.-272бет. Суретті.
-
Омарова Н.Ы. Паскаль тілінде программалау негізі Оқу құралы.- Алматы:Білім,1996.-140б
-
Камардинов О. Паскаль тілінде программалау// Инфор.физика.матем.-1995.- N 5.-29.34
-
Мұқанов Қ. Паскаль тілінде программа құруда бүтін сандармен жұмыс істеудің арнайы әдістері//Информатика негіздері.-2003 №3.-14-16б.
-
Информатика және есептеуіш техника негіздері. 9-сынып оқулығы.
-
Масанов Ж.Қ., Бельгибаев Б.А, Бижанова А.С., Мақұлов Қ.Қ., Турбо Паскаль. Алматы.- 2004.
-
Дәулетқазы Т. Турбо Паскаль программмалау тілі: Оқу құралы / Қарағанды мем.техн.ун-т Қарағанды: Қаз ҰТУ, 2003.- 200 бет.
ЗЕРТХАНАЛЫҚ ЖҰМЫСТАРДЫ ЖҮРГІЗУГЕ АРНАЛҒАН ӘДІСТЕМЕЛІК НҰСҚАУЛАР
Зертханалық жұмыс №1
Тақырыбы: Алгоритм түсінігі
Мақсаты: Алгоритм түсінігімен танысу, оның түрлерімен, қасиеттерімен танысу
Алгоритм. Ұсыну әдістері
ЭЕМ машиналық команда түрінде жазылған тек бір қарапайым арифметикалық не бір логикалық амалды ғана орындай алатын етіп құрылған. ЭЕМ арқылы информацияны өңдеу нәтижесін табу үшін біртіндеп орындалатын амалдар, нұсқаулар тізбегін алдын ала дайындап алу керек. Нәтиже алу үшін арнайы ереже бойынша жинақты түрде дайындалған нұсқаулар тізбегі– алгоритм деп аталады.
Алгоритмді әр түрлі тәсілдерді пайдаланып дайындау мүмкін.
Берілгендер – информатикадағы негізгі ұғымдардың бірі ЭЕМ-ге ендірілетін, шығарылатын және ішкі кодталған түрде өңделетін информация - берілгендер деп аталады.
Алгоритмнің қарапайым операцияны орындауы үшін машинаға берілген әр нұсқауы машиналық команда деп, ал командада көрсетілген сан және символ -аргумент деп аталады.
Машинаға түсінікті командалар тізбегі арқылы жазылған есептің алгоритмі осы есептің программасы деп, программа құру процесі – программалау деп аталады.
Информацияны өңдеудің алгоритмін 3 түрлі жолмен құруға болады.
1) ауызша алгоритм
2) блок-схема түрінде
3) алгоритмдік тілде
Ауызша алгоритм – күнделікті пайдаланылатын сөздер мен математикалық символдарды қолданып жазылған жеке-жеке нұсаулар жиынтығынан тұрады.
Блок-схема – түрлі арнайы фигуралар, нұсқаулар арқылы программада орындалатын әрекеттер мен олардың орындалу ретін көрсететін графиктік схема. Мұнда алгоритмде орындалатын әрекеттер геометриялық фигуралар арқылы сызылып, олардың байланыс жолдары нұсқама арқылы көрсетіледі.
а)
алгоритмнің басы мен соңы
б) - берілгендерді ендіру және нәтижені шығару
в)
- шартты тексеру
г)
- информацияны өңдеу
д) - байланыс бағыттары
Мысал. n! мәнін есептеу алгоритмі
Ауызша алгоритм
алг факториал
1. оқу n
2. k:=1; r:=1
3. r=r*k
4. k:=k+1
5. егер k n өту 3
6. жазу “n!=”, r
7. соңы
Блок-схемасы
иә жоқ
Алгоритмдік тіл – құрылымы нақтыланған бірыңғай және дәл жазылатын арнайы символдар мен ережелер жүйесінен тұрады. Пайдаланылатын символдар – тілдің алфавитін, ережелер жүйесі-оның синтаксисін құрайды.
Алгоритмдік тілдің алфавитінде, мағынасы мен қолдану тәсіліне алдын-ала түсініктеме беріліп қойылған, қызметші сөздер деп аталатын символдар бар.
1. Алгоритм тақырыбы : алг , арг, нәт, берілг, керек;
2. Алгоритмнің басталуы мен соңы: басы, соңы;
3. Тармақталу командасы: егер, онда, әйтпесе, біті;
4. Таңдау командасы: таңдау, жағдай,...,жағдай, әйтпесе, бітті
5. Қайталану командасы:
а) Цикл “әзірше”: цб, әзір, цс;
б) Цикл “үшін” : цб, үшін, дан(дан, тан, тен) , бастап, дейін, қадам, келесі, цс;
6. Құрама шарттар : және, немесе, емес;
7. Функция: мән
Информацияны өңдеудің ауызша алгоритмі негізінен көмірленген жолдар бойынша құрылатындықтан, мұндай алгоритмді жолдық алгоритм деп атайды.
Әр түрлі мәндерді қабалдай алатын объектілерді – шамалар деп атайды. Әр шаманың аты, мәні, типі бар. Аты-айнымалы шаманың белгіленуі, тип-алгоритмнің орындалу кезінде осы шаманың әр кезеңде қабылдайтын мәндерінің сипаттамасы. Тип бүтін, нақты, литерлік болуы мүмкін.
Литерлік мән деп мәні текст болатын шаманы айтамыз. Жалпы түрде жазылуы
алг алгоритмнің аты
арг арг-р аттары
нәт нәтижелер аттары
басы
алгоритм денесі
соңы
Алгоритмнің басы қызметші сөзіне дейінгі бастапқы бөлігі алгоритм тақырыбы деп, басы ... соңы қызметші сөздерінің аралығында орналасатын командалар тізбегін алгоритм денесі деп атайды.
Өңелетін информацияда берілген бастапқы шамаларды аргументтер деп, ал өңдеу қорытындысында табылатын шамаларды нәтижелер деп атайды.
Алгоритм типтері.
Мысал Қабырғалары а,в,с ауданын Герон формуласы бойынша есептеу алгоритмі және блок-схемасы.
алг аудан (нақ а,в,с, нақ s);
арг а,в,с
нәт s
басы нақ р
p:=(a+b+c)/2; S=sqrt [p*(p-a) (p-b) (p-c)]
соңы
Алгоритм тақырыбына кірмейтін, бірақ алгоритм денесінде пайдаланылатын айнымалы – аралық шама деп аталады.
Құрылған алгоритмде командалар бірінен соң бірі ретімен орындалатының байқауға болады. Мұндай алгоритмді сызықтық алгоритм деп атайды.
Мысал.
x2+7, x<1
y= 3x +5, x>1
алг функция (нақ х, нақ у)
арг х
нәт у
басы
егер x<1
онда y:=x**2+7
әйтпесе у:=3*x+5
бітті
соңы
Осы алгоритмді тармақталу алгоритмі деп аталады, егер кез келген шарттың орындалу, не орындалмауына байланысты 1-командалар сериясы немесе 2-команда сериясы орындалса, мұндай алгоритмді тармақталу алгоритмі деп аталады.
Қайталану командаларынан тұратын алгоритм-циклдік алгоритм деп аталады. Цикл құрамы цб сөзінен басталып, цс- сөзімен аяқталады. Олардың аралығына-цикл денесі орналасады.
q рет қайталану командасының жалпы түрде жазылуы
цб q рет
цикл денесі
цс
“үшін” циклінің алгоритм денесі;
басы бүт k,r
цб к үшін 1 бастап n дейін
r:=r*k
цс
соңы
Алгоритмдерге қойылатын талаптар
1) Алгоритмнің үздіктілігі
2) Алгоритмнің түсініктілігі
3) Алгоритмнің анықтылығы
4) Алгоритмнің бірдейлілігі
5) Алгоритмнің нәтижелілігі
Бақылау сұрақтары
-
Алгоритм дегеніміз не?
-
Қандай түрлері болады?
-
Блок-схемаға талдау жасаңыз.
-
Қойылатын талап тар қандай?
Зертханалық жұмыс №3
Тақырыбы: Паскаль тіліне кіріспе
Мақсаты: Паскаль тілінің шығу тарихымен, алфивитімен, стандартты функциялармен, мәліметтер типімен және оларды сипаттаумен танысу
Шығу тарихы
Паскаль программалау тілінің алғашқы нұсқасын 1968 жылы Стэнфорд университетінің информатика кафедрасының профессоры Никлаус Вирт жасады.
Ал 1975 жылы стандартты Паскальдың компиляторымен Турбо Паскаль (3.0 версия) программмалау тілі пайда болды. Содан бері Паскаль жалпы білімдік, кәсіптік-техникалық мектептерде және жоғары білім беру орындарында “бірінші” программалау тілі ретінде қолданыла бастады.
Турбо Паскаль тілін пайдаланудың қарапайымдылығынан пайдаланушылар арасында кең орын ала бастады.
Келе-келе Турбо Паскаль 4.0, Турбо Паскаль 5.0, Турбо Паскаль 6.0 және Турбо Паскаль 7.0 версияларының дүниеге келуі кәсіпкер қолданушының еңбектегі өнімділігін арттыруға мүмкіндік беруге, қолданбалы есептерді шығаруда қолдануға үлкен үлес қосты. Енді осы тілдің ерекшеліктері мен бірсыпыра мүмкіндіктерін қарастырайық.
Тілдің алфавиті
Тілдің алфавиті басқа тілдермен салыстырғанда құрылымы жағынан түсінікті, себебі оның әрбір амалы сипатталып отырады. Тілдің алфавитінің құрамына әріптер, цифрлар және арнайы белгілер кіреді.
1) Әріптер ретінде латын алфавитінің 26 әрпі ғана қолданылады.
Ұлттық алфавиттегі әріптер (қазақ, орыс т.с.с.) тек апострофқа (жоғарғы үтірге) алынған сөз тіркестері немесе жүйелі жақшаға алынған түсініктеме ретінде ғана кездеседі.
2) Цифрлар: 0, 1, 2, ..., 9.
3) Арнайы белгілерге төмендегі белгілер жатады.
а) Арифметикалық амалдардың белгілері
1-кесте
Р/н
|
Атауы
|
Белгіленуі
|
Түсіндірме
|
1
2
3
4
5
6
|
қосу
азайту
көбейту
бөлу
dіv
mod
|
+
-
*
/
|
бөліндінің бүтін бөлігін табу
бөлген кездегі қалдықты табу
|
1>1>