Главная страница
Навигация по странице:

  • Random функциясы. Const операторы Random(m)

  • 11-Дәріс. Массивтермен жұмыс

  • Жол. Жолдық стандартты функциялар. Мәтіндік массивті реттеу

  • Length(a)

  • Сһг(а)

  • TStringList класы. Массивті класс қасиетін пайдаланып реттеу TStringlist

  • Sorted

  • Procedure

  • 12-Дәріс. Процедура және функция. Рекурсия.

  • УМК ВП. казПОС. Пніні Оу программасы syllabus оытушы жнінде мліметтер


    Скачать 6.17 Mb.
    НазваниеПніні Оу программасы syllabus оытушы жнінде мліметтер
    АнкорУМК ВП. казПОС.doc
    Дата01.04.2018
    Размер6.17 Mb.
    Формат файлаdoc
    Имя файлаУМК ВП. казПОС.doc
    ТипДокументы
    #17493
    страница7 из 12
    1   2   3   4   5   6   7   8   9   ...   12

    Goto 10;

    end;

    // алдымен екіге бөлу

    {оң сан енгізілген}

    b:=2;

    repeat

    q := n mod b;

    if q<>0 // n екіге бүтін бөлінген жоқ

    then b := b+1; // бөлгішті 1-ге өсіру

    until q=0;

    Label1.Caption := Edit1.Text; Label1.Font.Name := 'Times Kaz';

    if b=n then

    Label1.Caption := Label1.Caption+' - жай сан'

    else

    Label1.Caption := Label1.Caption+' – құрама сан'; 10: ;

    end;

    1. Проектіні сақтап, іске қосу командасын беру. Форма көрінеді.

    2. Оның Edit1 өрісіне сан енгізіп, ОК түймесін шерту.

    Өріске 89 саны енгізілген кезде форманың көрінісі 2.18-суретте бейнеленген.



    2.18 – сурет. Санды жәй санға тексеру нәтижесі.
    Random функциясы. Const операторы

    Random(m) — 0..m-1 аралығында кездейсоқ санды тудыратын функция.

    Мысал. Random функциясын пайдаланып, тиын ақшаны n рет лақтырғанда цифр жағымен түсудің салыстырмалы жиілігін (w) жуық шамамен анықтау программасын құру керек (n рет сынақ жүргізілген кезде күтілген оқиға m рет пайда болса, w=m/n).

    Тиын ақшаның цифр жағымен түсу не түспеу оқиғаларын 1, 0 арқылы белгілеп, программаны мынадай түрде қуруға болады.

    1. Жаңа проект ашу;

    2. Формада Label1, Label2, Label3, Button1 компоненттерін орнату;

    3. Label өрістерінің Caption қасиеттерінің мәндерін бос ету; Button1 түймесінің Caption қасиетіне ОК мәнін меншіктеу.

    4. ОК түймесін екі рет шертіп, программалық код құру:

    procedure TForm2.Button1Click(Sender: TObject);

    var n, m, k, r : integer; w : real; nl, ml : string;

    begin

    n :=StrToInt(InputBox('','n=','')); //сынақ саны

    m := 0;

    for k := 1 to n do

    begin

    r := round(random(2)); // r=0 не 1

    if r=1 then m:=m+1; end;

    w := m/n; ml :=IntToStr(m); nl := IntToStr(n);

    Label1.Font.Name:='TimesKaz';

    Label2.Font.Name:='Times Kaz';

    Label3.Font.Name:='Times Kaz';

    Label1.Caption := nl+' сынақта цифрдың көрінуі '

    +ml+'peт';

    Label2.Caption := 'Жиіліктік' + FloatToStr(w);

    Label3.Caption:='Басқа сынақ санын енгізу үшін'+

    #13+'OK клавишін басыңыз';

    end;

    1. Проекті сақтап, іске косу. Форма көрінеді;

    2. Оның ОК түймесін шерту. Енгізу терезесі көрінеді; Терезеге сынақ санын (мысалы, 150) енгізіп, ОК түймесін шерту. Сынақ саны мен жиілік енгізілген форма көрінеді

    (2.19-сурет).

    Программаға енгізілген r - n сынактың әрқайсысында 0 не 1 кездейсоқ, санын қабылдайтын айнымалы;

    Round — нақты санды бүтінге дейін дәлдіктеу функциясы;

    Түрлі сынақтар саны үшін программаның орындалу нәтижесі кестеде көрсетілген. Цифрдың көріну жиіліктігі (w) сынақ саны көбейген сайын осы оқиғаның пайда болу



    2.19-сурет. 150 сынақта жиілік нәтижелері.

    ықтималдығына (0.5) бірте-бірте жақындай түсетіні математикалық статистика курсынан белгілі. Ол кестеден де көрініп тұр.


    Сынақгар

    саны — n

    Цифрлық беттің

    көріну саны - m

    Салыстырмалы

    жиілік - W

    130

    57

    0,57

    200

    93

    0,46

    300

    150

    0,51

    400

    207

    0.51

    1000

    507

    0.507



    Негізгі әдебиеттер: 2[37-56], 12[15-35], 7[17-32]

    Бақылау сұрақтары:

    1. 2 - 5х + 2 = 0 квадрат теңдеуін шешу программасын InputBox функциясы мен ShowMessage процедурасын (операторын) пайдаланып кұрыңыз.

    2. Жеңіл мәшине жүріп келеді. Оның жылдамдығы 230 км/саг - тан асса, "Жылдамдық шектен тыс, жылдамдықты азайтыныз" ескертуін шығару терезінде көрсететін көлденең белдеушенін Change оқиғасын өндеуіш процедурасын құрыңыз.

    3. Random функциясы.

    4. Const операторы
    11-Дәріс. Массивтермен жұмыс

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

    1-Мысал. 0..99 аралығындағы бүтін типті кездейсоқ n саннан тұратын сызықтық массив құрып, оның минимумын, максимумын және орта мәнін табу керек (n = 500).

    1. Жаңа проект ашу;

    2. Формада Label1, Button1 компоненттерін орнатып, олардың Caption қасиеттеріне мәндер меншіктеу (біріншісін бос ету, екіншісіне ОK мәнін меншіктеу);

    3. ОK түймесінің OnClick оқиғасын өндейтін процедура құру:

    procedure TForm1.OnClickClick(Sender: TObject);

    const n=500; // массив элементтерінің саны

    m=100; // кездейсоқ саңдар алынатын

    // аралықтың жоғарғы шегі

    var ms : array [1..n] of integer; //бүгін сандар массиві

    k : integer; // массив индексі

    min, max : integer; // ең кіші және ең үлкен сан

    sum: real; // сандар қосындысы

    begin

    for k := 1 to n do

    ms[k] := round(random(m)); // массивті кездейсоқ

    // бүтін сандармен толтыру

    min := ms[l]; max := ms[l]; sum := 0; for k := 1 to n do begin

    sum := sum+ms[k]; if ms[k]
    else if ms[k]>max then max := ms[k] ;

    sum:= sum/n ;

    Label1.Color:= clWhite;

    Label1.Caption := 'min='+IntToStr(min) +#13 +'maxs'+IntToStr(max)

    +#13+'orta man=' +FloatToStr(sum);

    end ;

    4. Проектіні сақтап, іске қосу. Көрінген форманың ОК түймесін шерту. Нәтижелік форма 2.20-суретте көрсетілген.




    2.20-сурет. Нәтижелер шығарылған форма




    Матрицамен жұмыс

    2-мысал. 100 метрлік қашықтыққа жүгіру барысында үш топтың әрқайсысынан төрт студент іріктеп алынды. Олардың секөнтпен өлшенген жүгіру нәтижелері 2.6-кестеге енгізілген. Қайсы топтың студенттері бірінші орынға шықты? Орта есеппен олардың әрқайсысы 100 метрді қанша уақытта өтті?
    1-топ 2-топ 3-топ


    12,69

    13,25

    12,28

    14,05

    13,16

    13,08

    13,32

    14,27

    14,02

    14,00

    12,01

    13,88
    1

    2

    3

    4

    1. Жаңа проект ашу;

    2. Формата Label1, Label2 өрістері мен Button1 түймесін opнату;

    3. Label1, Label1 компонеттерінің Caption қасиеттерінің мәндерін тазалау (бос ету), Button1 түймесінің сәйкес қасиетіне ОК мәнін, форманың сәйкес қасиетіне Нәтиже сөзін меншіктеу.

    4. Код терезесінде Button1 түймесінің onClick оқиғасын өндейіш процедурасын құру.

    procedure TffFixed.Button1Click(Sender: TObject);

    var a : array [1..4, 1..3] of string;

    s: array [1..3] of real; nomer, k, j : integer;

    min : real; nomerT : string; begin

    {енгізу терезесіне массив элемен-ттерін ретімен енгізу

    for k := 1 to 4 do

    for j := 1 to 3 do

    a[kj] := InputBox(", 'кезекті элемент- ', ");

    {op баган элементтерін косындььтаұ}

    s[1] :=0; s[2] := 0; s[3] := 0;

    for j := 1 to 3 do

    for k:=1 to 4 do s[j]:= s[j]+StrToFloat(a[k,j]); {жеңімпаз топтын, жинаған барлық үпайы, топ нөмірі} min := s[1];

    nomer := 1; for j := 2 to 3 do if s[j]
    begin

    min := s[j]; nomer :=j;

    end;

    nomerT := IntToStr(nomer); min := min/4; {нәтиже}

    Label1.Color := clWhite; Label1.Caption := '1-орынға шыкканы: '+ nomerT+' - топ';

    Label2.Color := clWhite;

    Label2.Caption :='Бір студенттің орташа уақыты'+FloatToStr(min, ffFixed,'');

    end;

    5. Проектіні сақтап, іске қосу. Форма көрінеді. Онын Button1түймесін шерту. Енгізу терезесі көрінеді. Оған элементтерді енгізу. Нәтиже көрінеді (2.21-сурет).


    2.21-сурет. Жарыс нәтижесі

    Ескерту. Енгізу терезесіне элементтерді цикл бойынша енгізу үшін ер элемент клавиатрурадан енгізілген сайын оньщ ОК түймесін шерту не КҚ клавишін басу керек.
    Жол. Жолдық стандартты функциялар. Мәтіндік массивті реттеу

    Іс жүзінде бір символдық және жолдық шамалармен жұмыс жиі кездеседі (жолдық және мәтіндік сөздері баламалы).

    Сандық тұрақтылар сияқгы, символдық, жолдық шамалардың мәндерін салыстыруға болатыны белгілі. Себебі, Windows жүйесінде пайдаланылатын ANSI кодтары кестесінде түрлі символдардың кодтары әртүрлі, мысалы asc('A')=65, asc(,C,)=67. Екі символдын қайсысының коды жоғары болса. сол символдын рангісі (шені) жоғары деп қабылданған ‘А’<‘С’).

    Мәтіндермен біріктіру (жалғастыру)және қиып (бөліп) алу амалдарын ғана орындау мүмкін. Delphi-де жалғастыру операциясы олардың аралығына + (плюс) таңбасын кою арқылы орындалады.

    Delphi-де мәтіндік шамалармен жұмыс істеу кезіңде пайдаланылатын стандартты функциялардың көпшілігі ТурбоПаскальдағы сияқты, мысалы:

    Length(a) - а мәтінінің ұзындығын анықтау (length -ұзындық). Функция Integer типті.

    Concat (a, b) не а + b - а мен b жолдарын біріктіру.

    Copy(a, m, n) - a мәтінінің m - символынан бастап n символын кесіп алу. Функция String типті.

    Pos(st, a) -а жолынан st үзіндісін іздеп, жолдың басынан есептегенде үзінді басталган орынның нөмірін анықтау (үзінді табылмаса, оны нөлге (0) тең деп нәтижелейді).

    Сһг(а) - а коды бойынша символды анықтау. Функция Char типті.

    Ord (b) — b символының кодын анықтау. Функция Integer типті, т.б. Мысалы:

    Length(‘мен’)=3;Сору(‘Ахметұлы’, 3, 5)=метұл;

    Pos(‘мет’, ‘Ахметұлы’) = 3; Pos (‘раш’, ‘Мұратбек’) = 0.

    Chr(65)='А'; Ord(‘A’)=65.

    Кодтарын салыстыру арқылы латын әріптерімен жазылған адамдардың аты-жөндерін бірінші әріптері бойынша салыстырып, фамилияларды реттеу программасын жазып шығу қиын емес. Программада цикл ішінде цикл (бір-біріне салынған циклдер) пайдаланылады. Ұлттық әріптермен жазылған фа­милияларды реттеу тәсілі төменде берілген (аты-жөндер массив элементтері түрінде қарастырылады).

    3-мысал. Қазақ әріптері бойынша төменде жазылған адамдардың аты-жөндерін бірінші әріптері бойынша реттеу керек.

    Мәдіхожаев Сұлтан

    Ысқақова Дамира

    Мұстафаев Қажым

    Атчабаров Жәнібек

    Оралханова Маржан

    1. Жаңа проект ашу;

    2. Формаға Рапеl1. панель үстіне Button1, форманың жоғарғы жағына Memo1 компоненттерін орнату;

    3. Компонент қасиеттеріне мәндер меншіктеу:


    Компонент

    Қасиет

    Мән

    Форма
    Panel 1
    Button 1 Memol

    Font Caption

    Caption

    Align

    Name

    Align

    ScrollBars

    Wordwrap

    Times Kaz, 10

    Реттеу

    <бос ету> alBottom

    OK

    alClient ssBoth

    False [


    4. Button1 түймесінің OnClick оқиғасын өндеуіш құру;
    procedure TForm1.Button1Click(Sender: TObject);
    const n=5;
    var a : array [1..n] of string;
    d, k, j : integer;
    r: string; begin
    for k := 1 to n do
    a[k] := InputBox(a[k], 'кезекті элемент - ','');
    r:='АӘБВГҒДЕЖЗИЙККЛМНҢОӨПРСТУФХ...';
    d := length(r);
    {цикл ішінде цикл. Массивті реттеу}
    for j := 1 to d do
    for k := 1 to n do
    if copy(a[k], 1, 1) = copy(r, j, 1) then
    Memo1.Lines.Add(a[k])
    end;

    5. Проектіні сақтап, іске қосу. Форма бетінде енгізу терезесі көрінеді. Оның өрісіне кезекті фамилияны енгізіп, ОК түймесін шерту. Реттелген фамилиялар форма терезесіне жазылып қойылады (2.22-сурет).



    2.22-сурет. Реттелген массив
    TStringList класы. Массивті класс қасиетін пайдаланып реттеу

    TStringlist — жолдармен жұмыс істеуге арналған аталық TString класының алғашқы туынды класы. TstringList-ті пай­даланып, өткен тақырыпта берілген мысалдағы сияқты, формада орнатылған ТМето компонентінің терезесіне көп қатарлы жолдар, жолдық массив енгізуге болады және класс қасиетін пайдаланып, оларды автоматты түрде реттеу (сортmay) да мүмкін. Кластың әдістері мен қасиеттері жеткілікті (ол аталық кластың қасиеттерін пайдалана алатыны да белгілі), мысалы,

    Берілгендер жиынтығына жол қосу:

    Function Add (Const: string): Integer;

    Бұрынғы берілгендер жиынтығын өшіріп, жаңа жиынтық қосу:

    Procedure Assign (Source : TPersistem);

    Жолдарды алфавит бойынша сорттау.

    Property Sorted : Boolean; // Sorted — True

    Жиынтықта жолдардың атмдық санын анықтау.

    Property Count : Integer; т.б.

    Мысал. өткен тақырыптың 3-мысалында берілген адамдарды Sorted қасиеті арқылы аты-жөндері бойынша сорттап, формата орнатылған Memo компонентінің терезесіне шығару керек.

    1. Жаңа проект ашып, формада Memo1, Button 1 компоненттерін орнату.

    2. Button1 түймесін екі рет шертіп, код терезесінде Button1Click процедурасын құру:

    Procedure TForm1.ButtonlClick (Sender: TObject);
    var st: TStringList;

    A : array [1..4] of string: k : byte:

    begin

    st := TStringList.Create: // класс данасын құру

    st.Sorted := True; // сорттау

    for k := 1 to 4 do

    begin

    a[k] := ІnputВох(‘Кезекті мән‘,’ ‘, ‘’);

    st.Add (a[k]);

    end;

    st.Sorted := False; // сорттау аяқталған соң оны

    //пайдаланбау
    Memol.Lines.Assign(st); // нәтижені шығару
    st.Free; //free - өшіру

    end;

    3. Іске қосу командасын беріп, көрінген форманың Button1 түймесін шерту. Одан әрі, көрінген енгізу терезесіне кезекпенен мысалда берілген тізім элементтерін енгізсе болғаны. Формаға енгізілген Memo1 компонентінің терезесінде аты-жөні бойынша сортталған массив көрінеді
    Негізгі әдебиеттер: 2[37-56], 12[15-35], 7[17-32]

    Бақылау сұрақтары:

    1. Жол. Жолдық стандартты функциялар.

    2. Мәтіндік массивті реттеу

    3. TStringList класы.

    4. Массивті класс қасиетін пайдаланып реттеу
    12-Дәріс. Процедура және функция. Рекурсия.

    Стандартты математикалық функциялар компоненттер панелінің System бетіне жазылып койылған. Күрделі программаларда басқа қосалқы процедуратар мен функцияларды пайдалану жиі кездеседі. Қажеттілерін Турбо Паскальдағы сияқты негізгі программа ішіне кірістіру қиын емес.

    1-мысал. Тікбұрышты үшбұрыштың катеттері белгілі: а-4.5; b=5.2. Процедура және функция енгізілген программалар арқылы оның периметрін табу керек. Нәтиже шығару терезесінде көрсетілсін.

    1. Жаңа проект ашу.

    Ішіне PifagPr атауы берілген қосалқы программа — проце­дура енгізілген форманың OnClick оқиғасын өндеуіш құру :
    1   2   3   4   5   6   7   8   9   ...   12


    написать администратору сайта