Паскаль тілінде программалау


Паскаль тілінде программалау



бет4/4
Дата07.02.2022
өлшемі3,99 Mb.
#85483
түріПрограмма
1   2   3   4
Байланысты:
Паскаль

Паскаль тілінде программалау

  • Тақырып 8. Функциялардың графигі
  • Функция графиктерін құру
  • Есеп: 0 мен 2π интервалы арасындағы y = 3 sin(x) функциясының графигін құру.
  • Анализ:
    • x = π/2 болғанда максималды мән ymax = 3
    • x = 3π/2 болғанда минималды мән ymin = -3
  • Мәселе: функция координалардың математикалық жүйесінде көрсетілген, ал графикті координаталарын пиксельдермен көрсете отырып компьютер экранында шығару керек.
  • Координаталардың түрленуі
  • (x,y)
  • X
  • Y
  • x
  • y
  • Координаталардың математикалық
  • жүйесі
  • Координаталардың экрандық жүйесі (пиксельдер)
  • (xэ,yэ)
  • (0,0)
  • (0,0)
  • a
  • b
  • k – масштаб (экрандағы жекелеген кесінді кескінінің ұзындығы)
  • xэ = a + kx
  • yэ = b - ky
  • Программа
  • hx-тің өзгеру қадамы
  • w – ОХ осінің ұзындығы(пиксельдер саны)
  • экранда
  • координаталар осі
  • графиктің құрылу циклі
  • program qq;
  • const a = 50; b = 200; k = 50;
  • xmin = 0; xmax = 6.2832;
  • var x, y, h: real;
  • xe, ye, w: integer;
  • begin
  • w := round((xmax - xmin)*k);
  • Line(a-10, b, a+w, b);
  • Line(a, 0, a, 2*b);
  • x := xmin; h := 0.05;
  • while x <= xmax do begin
  • y := 3*sin(x);
  • xe := a + round(k*x);
  • ye := b - round(k*y);
  • Point (xe, ye);
  • x := x + h;
  • end;
  • end.
  • Кемшілігі ?
  • ?
  • Нүктелерді қалай біріктіруге болады?
  • Алгоритм:
  • Егер бірінші нүкте болса
  • (xэ,yэ) нүктесіне өту
  • әйтпесе
  • (xэ,yэ) нүктесіне кесінді
  • Программа:
  • бастапқы мән
  • әрекеттердің нұсқасын таңдау
  • логикалық айнымалы
  • var first: boolean;
  • ...
  • begin
  • ...
  • first := True;
  • while x <= xmax do begin
  • ...
  • if first then begin
  • MoveTo(xe, ye);
  • first := False;
  • end
  • else LineTo(xe, ye);
  • ...
  • end;
  • end.
  • Тапсырмалар
  • "4": [-3,3] интервалы арасында y = x2 функциясының графигін құру.
  • "5": Функция графигін құру (эллипс)

Паскаль тілінде программалау

  • Тақырып 9. Процедуралар
  • Процедуралар
  • Есеп: Мына фигураны құру:
  • Ерекшелігі: Үш ұқсас фигура.
    • жалпы: өлшемдері, айналу бұрышы
    • айырмашылықтары: координаталары, түстері
  • Белгілі әдістермен шешуге бола ма?
  • ?
  • Неше координата белгілеу керек?
  • ?
  • Процедуралар
  • Процедура – кейбір әрекеттерді орындау үшін қолданылатын көмекші.
  • Қолданылуы:
    • программаның әр жерінде орналасқан бірдей әрекеттерді орындау
    • программаны түсіну оңай болу үшін оны бірнеше қосалқы бөліктерге бөлу
  • Көмекші есеп1
  • Көмекші есеп2
  • Көмекші есеп3
  • 1.1
  • 1.2
  • 1.3
  • 2.1
  • 2.2
  • 2.3
  • 3.1
  • 3.2
  • 3.3
  • Негізгі есеп
  • Процедуралар
  • Есепті орындау тәртібі:
    • бірдей немесе ұқсас әрекеттерді ерекшелеп алу (үш фигура)
    • олардың ұқсас жерлері (өлшемі, пішіні, айналу бұрышы) мен айырмашылықтарын (координаталары, түсі) табу
    • айырмашықтарын белгісіз айнымалылар түрінде өрнектеу, осы айнымалылар процедураның параметрлері болады
  • (x, y)
  • 100
  • 60
  • (x+100, y)
  • (x, y-60)
  • procedure Tr( x, y, r, g, b: integer);
  • begin
  • MoveTo(x, y);
  • LineTo(x, y-60);
  • LineTo(x+100, y);
  • LineTo(x, y);
  • Brush(1, r, g, b);
  • Fill(x+20, y-20);
  • end;
  • тақырыбы
  • MoveTo(x, y);
  • LineTo(x, y-60);
  • LineTo(x+100, y);
  • LineTo(x, y);
  • Brush(1, r, g, b);
  • Fill(x+20, y-20);
  • процедура тұлғасы
  • координаталар
  • түс
  • параметрлер
  • Программа
  • program qq;
  • begin
  • Pen(1, 255, 0, 255);
  • Tr(100, 100, 0, 0, 255);
  • Tr(200, 100, 0, 255, 0);
  • Tr(200, 160, 255, 0, 0);
  • end.
  • (100,100)
  • 100
  • 60
  • процедура
  • нақтылы параметрлер
  • процедураны шақырулар
  • procedure Tr( x, y, r, g, b: integer);
  • begin
  • ...
  • end;
  • формальды параметрлер
  • Процедуралар
  • Ерекшеліктері:
    • барлық процедуралар негізгі программаның үстінде орналасқан
    • процедураның тақырыбында формальды параметрлер жазылады, олар кейде өзгеріп отыратындықтан атаулармен белгіленеді
    • процедураны шақыру кезінде жақша ішінде нақтылы параметрлер(сандар немесе арифметикалық өрнектер) көрсетіледі
  • procedure Tr( x, y, r, g, b: integer);
  • Tr (200, 100, 0, 255, 0);
  • x
  • y
  • r
  • g
  • b
  • Процедуралар
  • Ерекшеліктері:
    • әрбір формалды параметрдің қос нүктеден кейін типі көрсетілуі қажет
    • егер типтері бірдей параметрлер бірінен кейін бірі орналасса, олардың арасы үтірмен ажыратылады
    • процедураның ішіндегі параметрлер айнымалылар секілді қолданылады
  • procedure A (x: real; y: integer; z: real);
  • procedure A (x, z: real; y, k, l: integer);
  • Процедуралар
  • Ерекшеліктері:
    • процедурада қосымша айнымалы ретінде жергілікті(локальді) айнымалыларды пайдалануға болады, басқа процедуралар оған қатынай алмайды
  • program qq;
  • procedure A(x, y: integer);
  • var a, b: real;
  • begin
  • a := (x + y)/6;
  • ...
  • end;
  • begin
  • ...
  • end.
  • procedure A(x, y: integer);
  • var a, b: real;
  • begin
  • a := (x + y)/6;
  • ...
  • end;
  • локальді айнымалылар
  • var a, b: real;
  • Параметр-айнымалылар
  • Есеп: екі айнымалы мәндерінің орындарын ауыстыратын процедураны құру.
  • Ерекшеліктері:
    • Процедурада жасалған өзгертулер шақырушы программаға белгілі болуы қажет.
  • program qq;
  • var x, y: integer;
  • begin
  • x := 1; y := 2;
  • Exchange ( x, y );
  • writeln ( ’x = ’, x, ’ y = ’, y );
  • end;
  • procedure Exchange ( a, b: integer );
  • var c: integer;
  • begin
  • c := a; a := b; b := c;
  • end;
  • мына процедура параметрлердің көшірмесімен жұмыс істейді
  • x = 1 y = 2
  • Параметр-айнымалылар
  • Қолданылуы: процедура(және функция) осындай әдіс арқылы бірнеше мән бере алады.
  • Шақыртудың тыйым салынған нұсқалары
    • Exchange ( 2, 3 ); { сандар }
    • Exchange ( x+z, y+2 ); { өрнектер }
  • procedure Exchange ( a, b: integer );
  • var c: integer;
  • begin
  • c := a; a := b; b := c;
  • end;
  • var
  • параметрлер өзгере алады
  • Тапсырмалар
  • "4": Процедураларды пайдалана отырып, мына фигураны құрастыру.
  • "5": Процедураларды пайдалана отырып, мына фигураны құрастыру.
  • a
  • a
  • a
  • 0,866∙a
  • Тең қабырғалы үшбұрыш

Паскаль тілінде программалау

  • Тақырып 10. Рекурсия
  • Рекурсивті объектілер
  • Рекурсивті объект деп - бір объект немесе дәл осындай бірнеше объект арқылы анықталатын объектіні айтады.
  • Мысалдар:
  • Факториал:
  • егер
  • егер
  • Рекурсияланған сурет:
  • Пифагор ағашы
  • N деңгейлі Пифагор ағашы – бұл ағаштың діңгегі мен осы діңгектен симметриялы түрде өсіп шыққан N-деңгейлі екі Пифагор ағашы, бұл ағаштардың бағанының ұзындығы 2 есе кем және олардың арасындағы бұрыш 90o-қа тең.
  • 6 деңгей:
  • Бұның рекурсивті фигура екенін қалай дәлелдеуге болады?
  • ?
  • Пифагор ағашы
  • Ерекшеліктері:
    • қашан тоқтау керек?
    • ағаштардың иілу бұрышы әр түрлі
  • Қалған деңгейлердің саны нөлге тең болғанда!
  • (x1, y1)
  • (x0, y0)
  • α
  • α+45o
  • α-45o
  • L
  • x1 = x0 + L·cos(α)
  • y1 = y0 – L·sin(α)
  • Еншілес ағаштардың иілу бұрышы
  • α + π/4
  • α – π/4
  • Процедура
  • α бұрышы
  • procedure Pifagor(x0, y0, a, L: real;
  • N: integer);
  • const k = 0.6; { ұзындықтың өзгеруі }
  • var x1, y1: real; { жергілікті айнымалылар }
  • begin
  • if N > 0 then begin
  • x1 := x0 + L*cos(a);
  • y1 := y0 - L*sin(a);
  • Line (round(x0), round(y0),
  • round(x1), round(y1));
  • Pifagor (x1, y1, a+pi/4, L*k, N-1);
  • Pifagor (x1, y1, a-pi/4, L*k, N-1);
  • end;
  • end;
  • рекурсивті шақырулар
  • егер N=0 болса, аяқтау
  • Рекурсивті процедура деп өзін өзі шақыратын процедураны айтады
  • Программа
  • program qq;
  • procedure Pifagor(x0, y0, a, L: real;
  • N: integer);
  • ...
  • end;
  • begin
  • Pifagor (250, 400, pi/2, 150, 8);
  • end;
  • α бұрышы
  • баған ұзындығы
  • деңгейлер саны
  • x0
  • y0
  • Ағашты 30o оңға қалай еңкейтуге болады?
  • ?
  • Pifagor (250, 400, 2*pi/3, 150, 8);
  • "4": Рекурсивті процедураны қолдана отырып, мына фигураны құрастыру:
  • "5": Рекурсивті процедураны қолдана отырып, мына фигураларды құрастыру:
  • Задания

Паскаль тілінде программалау

  • Тақырып 11. Анимация
  • Анимация
  • Анимация (ағылш. animation) – экрандағы кескінге жан бітіру.
  • Есеп: 400х400 пиксельді көк квадраттың ішімен 20х20 пиксельді сары квадрат солдан оңға қарай жылжып келеді. Программа өз жұмысын Esc пернесін басқанда немесе сары квадрат көк квадраттың оң жақ жетіне жеткен кезде тоқтатады.
  • Проблема: объектінің экранда қозғалуын қалай кескіндеуге болады?
  • Қосымша: объектінің қозғалысы (x,y) координаталарымен белгіленеді
  • Анимация қағидасы:
    • объектіні (x,y) нүктесінде саламыз
    • бірнеше миллисекундқа кідіру
    • объектіні өшіреміз
    • (x,y) координаталарын өзгертеміз
    • 1-қадамға көшеміз
  • «Пернелерді шертуді» қалай іске асыруға болады?
  • Оқиға деп қандай да бір объектінің қалпында өзгерістің болуын немесе пайдаланушының әрекетін айтады. (пернені басу, тышқанды шерту).
  • IsEvent – қолданушы тарапынан қандай да бір әрекеттің болған-болмағандығын анықтайтын логикалық функция.
  • Event – нақты қандай оқиғаның болғандығын анықтайтын процедура.
  • if IsEvent then begin
  • Event(k, x, y);
  • if k = 1 then
  • writeln(‘Коды бар перне ', x)
  • else { k = 2 }
  • writeln(‘Тышқан: x=', x, ' y=', y);
  • end;
  • var k, x, y: integer;
  • Esc пернесін басып циклдан қалай шығуға болады?
  • program qq;
  • var stop: boolean;
  • k,code,i: integer;
  • begin
  • stop := False;
  • repeat
  • if IsEvent then begin
  • Event(k, code, i);
  • if (k = 1) and (code = 27) then
  • stop := True;
  • end;
  • ...
  • until stop;
  • end;
  • егер бір нәрсе бола қалса...
  • қандай оқиға болды?
  • егер тоқтау қажет болса, True
  • циклді іске қосу
  • Процедура (сурет салу және өшіру)
  • procedure Draw(x, y: integer; flag: boolean);
  • begin
  • if flag then
  • Brush(1, 255, 255, 0)
  • else
  • Brush(1, 0, 0, 255);
  • Rectangle(x, y, x+20, y+20);
  • end;
  • (x, y)
  • (x+20, y+20)
  • Идеялар
    • бір процедура суретті салады және өшіреді
    • өшіру = фонның түсімен бояу
    • квадраттың шекарасын өшіріп тастау (негізгі программада)
  • сурет салу (True) немесе салмау (False)?
  • сурет саламыз: қылқаламның түсі – сары
  • суретті өшіреміз: қылқаламның түсі – көк
  • тек қана құю!
  • Толық программасы
  • program qq;
  • var x, y, k, code, i: integer;
  • stop: boolean;
  • procedure Draw(x,y: integer; flag: Boolean);
  • begin
  • ...
  • end;
  • begin
  • Brush(1, 0, 0, 255);
  • Rectangle(10, 10, 400, 400);
  • Pen(0, 0, 0, 255);
  • x := 10; y := 200; stop := false;
  • repeat
  • if IsEvent then begin
  • ...
  • end;
  • Draw(x, y, True);
  • Delay(10);
  • Draw(x, y, False);
  • x := x + 1;
  • if x >= 400-20 then stop := true;
  • until stop;
  • end.
  • процедура
  • бастапқы жағдайлары
  • Esc пернесімен шығу
  • шекараға тақалған кезде шығу
  • көк фон
  • 10 мс күтеміз
  • шекараны өшіріп тастау
  • "4": Екі квадрат бір біріне қарама-қарсы бағытта қозғалады:
  • "5": Екі квадрат бір біріне қарама-қарсы бағытта қозғалады және көк квадраттың қабырғасына соқтығысып кері бағытта жылжиды:
  • Тапсырмалар
  • Пернелермен басқару
  • Есеп: көк квадраттың ішінде орналасқан сары квадрат бағыттаушы пернелермен басқарылатындай болуы керек. Пернелердің коды:
  • солға – 37 жоғары – 38 Esc – 27
  • оңға – 39 төмен – 40
  • Проблема: қозғалыс бағытын қалай өзгертуге болады?
  • Шығарылуы:
  • if {оқиға болды} then begin
  • if {перне басулы} then begin
  • {перненің кодын алу - code}
  • if code = 37 then x := x – 1;
  • if code = 38 then y := y – 1;
  • if code = 39 then x := x + 1;
  • if code = 40 then y := y + 1;
  • if code = 27 then stop := True;
  • end;
  • end;
  • IsEvent
  • Event ( k, code, i);
  • if k = 1 then begin
  • case code of
  • 37: x := x – 1; 38: y := y – 1;
  • 39: x := x + 1; 40: y := y + 1;
  • 27: stop := True;
  • end;
  • егер перне басылған болса, …
  • Программасы
  • program qq;
  • var x, y, k, code, i: integer;
  • stop: boolean;
  • begin
  • ...
  • repeat
  • Draw(x, y, True);
  • Delay(20);
  • Draw(x, y, False);
  • until stop;
  • end.
  • procedure Draw(x,y: integer; flag: Boolean);
  • begin
  • ...
  • end;
  • if IsEvent then begin
  • ...
  • end;
  • Кемшілігі?
  • ?
  • процедура
  • негізгі цикл
  • оқиғаларды өңдеу
  • Жыпылықтауды қалай кетіруге болады?
  • Проблема: ешбір перне басылмағанның өзінде де квадрат әр 20 мс сайын басқа түске боялып тұрады(жыпылықтау!)
  • Бізге қажеттісі: ешқандай оқиға болмаса квадратты басқа түстерге боямау (жыпылықтатпау)
  • Шығарылуы: квадратты бояп тастап, оқиғаны күту
  • Жаңа проблема: оқиғаны қалай күтеміз ?
  • Жаңа проблеманың шығарылуы: бос цикл «оқиға болмайынша ештеме істеме":
  • while not IsEvent do;
  • Программасы
  • program qq;
  • var x, y, k, code, i: integer;
  • stop: boolean;
  • begin
  • ...
  • repeat
  • Draw(x, y, True);
  • while not IsEvent do;
  • until stop;
  • end.
  • procedure Draw(x,y: integer; flag: Boolean);
  • begin
  • ...
  • end;
  • Draw(x, y, False);
  • Event(k, code, i);
  • ...
  • while not IsEvent do;
  • процедура
  • квадраттың суретін саламыз
  • оқиғаны күтеміз
  • енді өшіруге болады
  • Нені жақсартуға болады?
  • ?
  • "4": Квадрат бағыттауыш пернелерді басқан бағытта жылжып отырады, алайда көк квадраттың шекарасынан асып кете алмайды:
  • "5": Квадрат үздіксіз қозғалып отырады, бағыттауыш пернелер басылған кезде өз бағытын өзгертеді және көк квадраттың қабырғаларына соқтығысып кері жылжып отырады:
  • Тапсырмалар
  • Айналу
  • Есеп: Жердің Күнді айналу моделін бейнелеу.
  • Проблема: шеңбер бойымен айналу, координаталарды қалай өзгертіп отыруға болады?
  • Шығарылуы: тәуелсіз айнымалы ретінде α –ның айналу бұрышын қолдану (циклде өзгерту)
  • (x0, y0)
  • α
  • L
  • (x, y)
  • x = x0 + L·cos(α)
  • y = y0 – L·sin(α)
  • Процедура
  • procedure Draw(x, y: integer; flag: boolean);
  • const r = 10;
  • begin
  • if flag then
  • Brush(1, 100, 100, 255)
  • else
  • Brush(1, 0, 0, 0);
  • Ellipse(x-r, y-r, x+r, y+r);
  • end;
  • сурет салу (True) немесе салмау (False)?
  • суретті өшіреміз: қылқалам түсі – қара
  • тек қана құю!
  • Жердің радиусы
  • (x-r, y-r)
  • (x,y)
  • (x+r, y+r)
  • Тұрақтылар мен айнымалылар
  • program qq;
  • const rSun = 60; { Күннің радиусы }
  • L = 150; { Жер орбитасының радиусы }
  • x0 = 200; { Күн центрінің координаталары }
  • y0 = 200;
  • var x, y, { Жердің координаталары }
  • k, code, i: integer; { Event үшін }
  • a, ha: real; { айналу бұрышы, қадам }
  • stop: boolean; { программаны тоқтату белгісі }
  • begin
  • ...
  • end.
  • procedure Draw(x, y: integer; flag: Boolean);
  • begin
  • ...
  • end;
  • Негізгі программа
  • program qq;
  • ...
  • begin
  • Brush(1, 0, 0, 0); Fill(1,1);
  • Brush(1, 255, 255, 0);
  • Ellipse(x0-rSun, y0-rSun, x0+rSun, y0+rSun);
  • a := 0; ha := 1*pi/180;{ бастапқы бұрыш, 100 мс-та 1o қадам}
  • stop := false;
  • Pen(0,0,0,0); { контурларды өшіріп тастаймыз }
  • repeat
  • x := round(x0 + L*cos(a));
  • y := round(y0 - L*sin(a));
  • Draw(x, y, True);
  • Delay(100);
  • Draw(x, y, False);
  • a := a + ha;
  • until stop;
  • end.
  • фонды қара түске бояу
  • Күннің суретін саламыз
  • жаңа координаталар
  • ha бұрышына бұрылу
  • 100 мс күтеміз
  • if IsEvent then begin
  • Event(k, code, i);
  • if (k = 1) and (code = 27) then stop := true;
  • end;
  • "4": Күнді айналып жүрген екі планетаның моделін бейнелеу, планеталар бір-біріне қарама-қарсы бағытта қозғалатын болсын:
  • "5": Күн-Жер-Ай жүйесінің моделін бейнелеу:
  • Тапсырмалар

Паскаль тілінде программалау

  • Тақырып 12. Кездейсоқ сандар
  • Кездейсоқ сандар
  • Кездейсоқ көріністер: барлық жерде…
    • тиынды лақтыру ("орел" немесе "решка")
    • қардың түсуі
    • броундық қозғалыс
    • телефон байланысында болатын ақаулар
    • радиоэфирдің шуы
  • Кездейсоқ сандар – бұған дейінгі сандардың ретін біліп отырсақ та, келесі санның қандай екені белгісіз болатын сандардың тізбегін айтады.
  • Проблема: компьютерде осыны қалай алуға болады?
  • Мүмкін болатын шешімдері:
  • шу ақауларының сыртқы көздерін пайдалану
  • математикалық түрлендірулерді пайдалану
  • Жалған кездейсоқ сандар
  • Жалған кездейсоқ сандар – бойында кездейсоқ сандардың қасиеті бар, бірақ әрбір келесі сан алдын ала берілген формула бойынша есептелетін сандардың тізбегін айтады.
  • Мысалдар:
    • Кездейсоқ бүтін сандар [0,m) (сызықты конгруэнтті әдіс)
    • Кездейсоқ нақты сандар [0,1]
  • санның бөлшек бөлігі
  • a, c, m - бүтін сандар
  • жай сан
  • 230-1
  • мысал, k = 5
  • Кездейсоқ сандардың орналасуы
  • Модель: қар бұршақтары [a,b] кесіндісінің аралығына түседі
  • a
  • b
  • a
  • b
  • орналасуы
  • бірқалыпты
  • бірқалыпты емес
  • Әр түрлі орналастырулардың саны қанша болуы мүмкін?
  • ?
  • Кездейсоқ сандардың орналасуы
  • Ерекшеліктері:
    • орналасу – бұл бір ғана санның емес бүкіл тізбектің сипаттамасы
    • бірқалыпсыздардың саны – көп
    • кез келген бірқалыпсыз орналасуды бірқалыпты орналасудың көмегімен алуға болады.
  • a
  • b
  • a
  • b
  • бірқалыпты орналасу
  • бірқалыпсыз орналасу
  • Паскальдегі кездейсоқ сандардың генераторы
  • [0,N] интервалындағы бүтін сандар:
  • var x: integer;
  • ...
  • x := random ( 100 ); { интервал [0,99] }
  • [0,1] интервалындағы бүтін сандар:
  • var x: real;
  • ...
  • x := random; { интервал [0,1] }
  • Кездейсоқ сандар
  • Есеп: 400х300 пиксельді тіктөртбұрыштың ішін түстері кездейсоқ нүктелермен бірқалыпты етіп толтыру.
  • Нүктенің кездейсоқ координаталарын қалай алуға болады?
    • x := random ( 400 );
    • y := random ( 300 );
  • Бірқалыптылықты қалай алуға болады? random функциясы қолданылса автоматты түрде қамтамасыз етіледі
  • Кездейсоқ түстерді қалай алуға болады?
    • Pen (1, random(256), random(256), random(256));
    • Point ( x, y );
  • Программа
  • program qq;
  • var x, y, k, code, i: integer;
  • stop: boolean;
  • begin
  • stop := False;
  • repeat
  • x := random(400);
  • y := random(300);
  • Pen(1, random(256), random(256), random(256));
  • Point(x, y );
  • if IsEvent then begin
  • Event(k, code, i);
  • if (k = 1) and (code = 27) then stop := True;
  • end;
  • until stop;
  • end.
  • кездейсоқ координаталар
  • кездейсоқ түс
  • "4": Пернетақтадан тіктөртбұрыш бұрыштарының координаталарын енгізіп, тіктөртбұрыштың ішін түстері кездейсоқ нүктелермен толтыру керек.
  • "5": Үшбұрыштың ішін түстері кездейсоқ болатын нүктелермен толтыру. (бірқалыпты немесе бірқалыпты емес).
  • Қосымша көмек: бұрышы 45о болатын теңбүйірлі үшбұрышты алу керек .
  • Тапсырмалар
  • (100,100)
  • (300,200)

Паскаль тілінде программалау

  • Тақырып 13. Функциялар
  • Функциялар
  • Функция – нәтижесі қандай да бір мәнге ие болатын көмекші алгоритм (қосалқы программа).
  • Мысалдар:
    • , , есептеу
    • өрнектерді күрделі формулалармен есептеу
    • сұраққа жауап (жай сан ба, әлде жай сан емес пе?)
  • Неліктен?
    • программаның әр жерінде орналасқан бірдей есептеулерді орындау үшін
    • функциялардың жалпыға бірдей кітапханаларын құру үшін
  • Процедурадан айырмашылығы неде?
  • ?
  • Функциялар
  • Есеп: екі санның үлкенін анықтайтын функция құру және оны қолдануға мысал келтіру
  • Функция:
  • формальды параметрлер
  • function Max (a, b: integer): integer;
  • begin
  • if a > b then Max := a
  • else Max := b;
  • end.
  • бұл функцияны нәтижесі
  • Функциялар
  • Ерекшеліктері:
    • тақырыбы function сөзімен басталады
    • функцияда формальды параметрлер процедурадағыдай сипатталады
    • айнымалы параметрлерді пайдалануға болады
    • тақырыптың соңында қоснүктеден кейін нәтиженің типі көрсетіледі
    • функциялар негізгі программадан ЖОҒАРЫ орналасады
  • Max (a, b: integer): integer;
  • function
  • function Max (a, b: integer): ;
  • integer
  • function qq( a, b: integer; x: real ): real;
  • a, b: integer; x: real
  • function Max ( a, b: integer): integer;
  • var
  • Функциялар
  • Ерекшеліктері:
    • жергілікті айнымалыларды жариялауға және пайдалануға болады
    • нәтиже болатын мән - аты функцияның атымен сәйкес келетін айнымалыға жазылады; оны жариялаудың ҚАЖЕТІ ЖОҚ:
  • function Max (a, b: integer): integer;
  • begin
  • ...
  • end;
  • Max := a;
  • function qq (a, b: integer): float;
  • begin
  • ...
  • end;
  • var x, y: float;
  • Delphi-де:
  • !
  • Result := a;
  • Программа
  • program qq;
  • var a, b, max: integer;
  • begin
  • writeln(‘Екі сан енгіз');
  • read(a, b);
  • max := Max ( a, b );
  • writeln(‘Санның үлкені ', max );
  • end.
  • function Max (a, b: integer): integer;
  • begin
  • ...
  • end;
  • c
  • c
  • c
  • Айнымалылардың, функциялардың және процедуралардың аттары бірдей болмауы керек!
  • !
  • нақты параметрлер
  • функцияны шақыру
  • Логикалық функциялар
  • Есеп: енгізілген санның - жай сан екендігін анықтайтын функция құру.
  • Ерекшеліктері:
    • жауабы – логикалық мән (True немесе False)
    • функцияның нәтижесін if, while шарттарында логикалық шама ретінде қолдануға болады
    • Алгоритм: 2-ден N-1-ге дейінгі аралықтағы бөлгіштердің санын есептейміз, егер олардың саны нөлге тең болмаса енгізілген санның - құрама сан болғаны.
  • count := 0;
  • for i := 2 to N-1 do
  • if N mod i = 0 then
  • count := count + 1;
  • if count = 0 then
  • { N саны – жай сан }
  • else { N саны – құрама сан }
  • for i := 2 to N-1 do
  • if N mod i = 0 then
  • count := count + 1;
  • Қалай жақсартуға болады?
  • ?
  • Логикалық функциялар
  • program qq;
  • var N: integer;
  • begin
  • writeln(‘Бүтін сан енгіз');
  • read(N);
  • if Prime(N) then
  • writeln(N, ' – жай сан')
  • else writeln(N, ' – құрама сан');
  • end.
  • function Prime (N: integer): boolean;
  • var count, i: integer;
  • begin
  • i := 2; count := 0;
  • while i*i <= N do
  • if N mod i = 0 then count := count + 1;
  • i := i + 1;
  • end;
  • Prime := (count = 0);
  • end;
  • функцияны шақыру
  • нәтижесі – логикалық мән
  • шарт дегеніміз – логикалық мән
  • таңдап алу тек -ге дейін
  • Тапсырмалар
  • "4": 1-ден N-ге дейінгі сандардың қосындысын анықтайтын функция құру және оны қолдануға мысал келтіру.
  • Мысал:
  • Сан енгіз:
  • 100
  • қосынды = 5050
  • "5": Шахматты ойлап шығарған адамның N-ші торға неше бидайдың қоюын сұрағанын анықтайтын функция құру. ( 1-шісіне – 1 дән, 2-шісіне – 2 дән, 3-шісіне – 4 бидай дәнін, …)
  • Мысал:
  • Тордың нөмірін енгіз:
  • 28
  • 28-шісі торда 134217728 бидай дәні.
  • Тапсырмалар (2-нұсқа)
  • "4": Екі натурал санның ең үлкен ортақ бөлгішін анықтайтын функция құру және оны қолдануға мысал келтіру.
  • Мысал:
  • Екі сан енгіз:
  • 14 21
  • ЕҮОБ(14,21)=7
  • "5": Синус функциясын қатардың қосындысы секілді есептейтін функция құру. (0.001 дәлдікпен)
  • Мысал:
  • Градус түріндегі бұрышты енгіз:
  • 45
  • sin(45) = 0.707
  • x радиан түрінде!
  • Фильмнің соңы


Достарыңызбен бөлісу:
1   2   3   4




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет