Оқу-ҽдістемелік материалдар «алгоритмдеу жҽне бағдарламалау негіздері» Баспа



Pdf көрінісі
бет6/11
Дата28.01.2017
өлшемі1,33 Mb.
#2921
1   2   3   4   5   6   7   8   9   10   11

 
Writeln (X,‘^2=‘,Y);   {нҽтиже ҽр циклдің шығады} 
 
Lnc (X,3) 
 
Until X>10; 
Readln END. 
Радиустары  әртҥрлі  5  шеңбердің  аудандарының  қосындысын  табу 
программасын құру. 
PROGRAM Audankos; 
CONST PI=3.14;                          {тҧрақты шаманы кҿрсету} 
VAR R,K: integer;      S, P:Real;     {айнымалыларды сипаттау} 
BEGIN 
P:=0;K:=1;              {қосынды мен цикл параиетрінің алғашқа мҽні} 
 
REPEAT 
Readln (R);                  {радиустың мҽнін енгізу (5 рет )} 
 
S:=PI*SQR(R);   {5 шеңбердің ауданын есептеу} 
 
P:=P+S;               {5 ауданды бір – біріне қосу} 
 
LNC(K)                 {К – ның келесі мҽні} 
 
Until K>5;            {циклдің тоқтау шарты} 
Writeln (‗аудандар қосындысы P=‘,P:4:1);  {нҽтиже шығару} 
Readln END. 
 
1  –  ден  N  –  ге  дейінгі  жұп  сандардың  квадраттарының  қосындысы 
мен тақ сандардың тҥбірлерінің көбейтіндісін табу программасы. 
PROGRAM Sankvadrad; 
VAR X, K, N; integer; 
Y:Longing; 
S:Real;            {айнымалыларды сипаттау} 
BEGIN Readln(N);    {N санын енгізу} 
                              {циклдің басы} 
REPEAT 
{санның жҧп – тақтығын}  
{анықтайтын шарт} 
if XMod 2= 0 
Then Y:=Y+Sqr(x) 
Elser S:=S*Sqrt(x); 
Lnc(x)       {х – тің келесі мҽні} 
Unit X>N;   {циклдің тоқтау шарты} 
Writeln (‗Жҧп сандардың квадраттарының қосындысы=‘,Y); 
Writeln (‗Тақ сандардың тҥбірлерінің кҿбейтіндісі=‘,S:4:1); 
Readln End. 
 
6.1 Цикл ішіндегі циклдер 
 
Turbo  Pascal  программаларында  бір  циклдің  ішінде  екінші  цикл,  оның 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 58-сі 
 
 
58 
ішінде 
ҥшінші 
цикл 
тағыда 
сондай 
– 
сондай 
бір 
– 
біріне 
қабаттастырыпҧйымдастыруға  болады.  Егер  бір  циклдің  денесінің  қҧрамында 
басқа  бір  циклдер  болса,ондай  циклді  сыртқы  цикл  дейді.  Ал  цикл  басқа  бір 
циклдің  қҧрамында  болса,  ондай  циклді  ішкі  цикл  дейді.  Сыртқы  жҽне  ішкі 
циклдерді  ҧйымдастыру  тҽртібі  жай  циклдерді  ҧйымдастыруға  ҧқсайды.Тек 
қана  мынадай  ережені  есте  сақтаған  жҿн:  Ішкі  циклдердің  барлық 
операторлары сыртқы циклдің денесінде болуы шарт. Цикл ішіндегі циклдердің 
орындалу тҽртібі мынадай: 
1. Алдымен сыртқы циклдің параметрінің алғашқы мҽні бойынша сыртқы 
циклдің  орындалуының  шарты  тексеріледі,  егер  сыртқы  циклдегі  шарт 
орындалса, онда басқару цикл денесіндегі ішкі циклге беіледі. 
2.  Ішкі  циклдің  параиетрлерінің  барлық  мҽндері  бойынша  ішкі  циклдің 
орындалуы толық тексерілгеннен кейін басқару сыртқы циклге беріледі. 
3.  Сыртқы  циклдің  параметрінің  келесі  мҽні  бойынша  сыртқы  циклдің 
орындалуының шарты тексеріледі, егер сыртқы циклдегі шарт орындалса, онда 
басқару қайтадан ішкі циклге беріледі. 
Цикл ішіндегі циклдер ұйымдастыру мысалдары: 
 
Көбейту кестесін шығару программасын құру. 
 
Программаны FOR операторын ғана қолданып қҧру: 
PROGRAM Kob; 
VAR K, I, S:Byte; 
BEGIN    {сыртқы цикл тақырыбы} 
For K:=2To 9 Do Begin 
             {ішкі цикл} 
For I:=1 To 9 Do 
Begin S:= K*I; 
Write(K,‘X‘, I,‘=‘, S, ‘ ‘ ) End;   {ішкі цикл соңы} 
Writeln 
End;                                           {сыртқы цикл соңы} 
Readln END. 
7 Процедуралар мен функциялар 
 
Программалау  барысында    кей  жағдайларда,  бір  типті    есептеулерге  
бірнеше программалар ќҧруға тура келеді. Осындайда  артыќ жҧмыс жасамай, 
барлыќ  есептеулерді    бір  ғана  программа    ішінде  орындау  ҥшін,  кҿмекші 
программалар-  процедуралар немесе функциялар ќолданылады. Процедуралар 
мен функциялар программаның орындалу барысында бірнеше рет  ќайталанып 
тҧратын    бірнеше    операторлардан  тҧратын  кҿмекші    бҿлігі.  Программада 
бірнеше    процедура  немесе    функция  болуы  мҥмкін.  Сол,  сияќты  кҿмекші 
программаның  да  ҿз  кҿмекші  программасы  болуы  мҥмкін.  Негізгі 
программаның    сипаттамалар  бҿлімінде  жазылған  индефекаторлар  кҿмекші 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 59-сі 
 
 
59 
программаның ішінде  де жҧмыс істей береді. Программа орындалу барысында  
негізгі программа шаќырылады. 
Процедура орындалу барысында  бірнеше нєтиже алады, ал функцияның 
нєтижесі  бір  ғана  мҽн  алады    кҿмекші  программалардың  да  негізі  программа 
сияќты 
    а) кҿмекші программа аты, параметрлері жазылатын таќырыптан; 
    є) кҿмекші программада кездесетін  индефекаторларды сипаттау бҿлімінен; 
    б) операторлардан тҧратын программа денесінен тҧрады. 
  Процедураның жазылуы: 
             PROCEDURE     Аты  (формальды параметрлер); (*Таќырыбы*)  
             Сипаттамалар бҿлімі;  (* Бҧл бҿлім болмауы да мҥмкін*) 
             BEGIN   
             Операторлар; 
             END; 
 
   Функцияның  жазылуы:  
            FUNCTIION  аты (формальді параметрлер): Типі; 
            Сипаттамалар бҿлімі; 
            BEGIN  Операторлар; END; 
 
Процедура  мен  функциялардың  наќты  жҽне    формальді    параметрлері 
болады. Программа орындалу  барысында  есептелетін параметрлер наќты деп,   
ал  кҿмекші  программалардың  сипаттамасында  кҿрсетілетін  параметрлер   
формальды  деп  аталады.  Наќты  жҽне  формальды  параметрлердің  типі,  саны,   
реттілігі  сҽйкес  болуы  тиіс.  Олар  бірдей  белгіленуі  де  мҥмкін.  Наќты 
параметрлер  тҧраќтылардан,  айнымалылардан  жҽне    ҿрнектерден    тҧруы 
мҥмкін. Кей   процедуралар  параметрлері  болмауы да мҥмкін.  
Негізгі программада  процедураны  пайдалану ҥшін процедураның  атын 
наќты параметрлермен  жазып шаќырады.  
  Мысалы программа таќырыбы тҿмендегідей болса: 
         PROCEDURE SUMMA (N,M,X INTEGER); 
  Онда процедураны программада мынадай жолмен шаќыруға болады: 
                  SUMMA (19, А,50); 
Жаќшадағы19, А, 50 - наќты параметрлер болып табылады. 
Сонда  процедурадағы  формальды  параметрлер  мынадай  мҽндерге  ие 
болады: 
                 N=19, M=А, X=50. 
Сонымен  программада    процедура  шаќыру  процесіне  формальды    
параметрлерді    наќты    параметрлердің  мҽнімен  ауыстыру  болып  табылады.   
Процедураның  параметрлері  мҽндік    жҽне  айнымалы  болып  бҿлінеді.  Мҽндік 
(аргументтік)  параметрлер    тек  ќана    наќты    параметрлердің  мҽнін  ҿзіне 
ќабылдайды  да,  ќайтып  оларға  ҿзінің  мҽнін  бере  алмайды.  Ал  айнымалы   
параметрлер  наќты орындалу барысында ҿзгертіп, наќты параметрлерге жаңа 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 60-сі 
 
 
60 
мҽндерін  ќайтып  береді.  Айнымалы  параметрлердің    алдына  ќызметші  сҿздер 
ќойылып жазылады. Мысылы: 
            PROCEDURE  PRIMER (A,B:INTEGER; VAR X,Y:INTEGER); 
            VAR S: ITEGER; 
            BEGIN 
            S:=A+5*B; 
            X:=SQR (S); 
            Y:=SQR (X); 
            END
 
Бҧл процедураны былай жазып шаќыруға болады: 
           PRIMER (10,5,K,I); 
Нҽтижесінде: 
а)  формальді  параметрлер 10, 5, K, І  наќты параметрлердің мҽнін ќабылдап, 
ҽ) процедура орындалады да, 
б)X-пен Y ҿздерінің жаңа мҽндерін K-мен І-ге береді. 
 
   1)  A=10, B=5, X=K, Y=I, 
   2)  S=10+5*5=35, 
            X=35*35=1225, 
            Y=1225*1225=1500625, 
   3)      K=X=1225, 
            I=Y=1500625. 
 
Функциялар процедуралар  сияќты шаќырылады. 
Мысалы  1-ден  15-  ке  дейінгі  жҽне  1-ден  9-  ға  дейінгі      ќосындылардың     
кҿбейтіндісін  алу  программасында    ќосынды  табуға  SUMMA  функциясын 
ќолдануға болады. 
        FUNCTION SUMMA (M:INTEGER):INTEGER; 
        BEGIN 
        S:=0; 
        FOR K:=1 TO M DO 
        S:=S+K; SUMMA:= S; 
       END; 
       BEGIN P:=SUM(15)+SUM(9); 
       WRITELN('Кҿбейтінді ='P); 
       END. 
 
8 Массивтер 
 
Индексті  айнымалылардың  жиынтығын  -  массивтер  дейді.  Массивтерді 
программада  ќолдану  ҥшін,  оларға  белгілі  бір  ат  беріледі.  Содан  соң 
программаның    VAR    бҿлімінде  ARRAY  ќызметші  сҿзімен  сипаттап,  

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 61-сі 
 
 
61 
компьютердің  жадынан  массив  элементтеріне  орын  бҿледі.  Массивтер  бір 
ҿлшемді жҽне екі ҿлшемді   (матрицалар) болып бҿлінеді. Массив элементтерін  
ҿндіру  жҽне  шығару  цикл  арќылы  жҥзеге  асырылады.  Екі  ҿлшемді 
массивтердің  бірінші  индексі    ќатардың,  ал  екіншісі  -  бағанның  номерін 
білдіреді.    Екі  ҿлшемді  массивтерді    ендіргенде  екі  цикл  ҧйымдастырылады, 
сыртќы цикл - ќатарлар     бойынша жҽне ішкі цикл - бағандар номері бойынша. 
 
Бір ҿлшемді массивтердің сипатталу тҥрлері: 
                                  CONST N=100; { N-элементтер саны} 
                                  TYPE MAS=ARRAY [1..N] OF REAL; 
                                  VAR A: MAS; 
Немесе бірден VAR  бҿлімінде: 
                                   CONST N=100; 
                                   VAR A: ARRAY[1..N] OF REAL; 
Екі ҿлшемді массивтер (матрицалар) сипатталу тҥрлері: 
                                    CONST N =100; M=100; 
                                    TYPE MAS = ARRAY [1..N, 1..M]  OF REAL; 
                  {N- ќатарлар саны, М- бағдар саны} 
Массивтерге программа ќҧру. 
1. Массивтің теріс элементтерінің ќосындысын шығару. 
      PROGRAM PR1; 
      CONST N=20; 
      VAR K:INTEGER;X:ARRAY [1..N] OF REAL; 
                  S:REAL; 
      BEGIN FOR K:=1 TO N DO REFD (X[K]); 
      S:=0;     FOR K:=1 TO N DO IF X [K]<0 
      THEN S:=S+X [K]; 
      WRITELN (Теріс элементтер ќосындысы',S:7:2); END. 
 
2. Массивтің 5-тен ҥлкен элементтерінің кҿбейтіндісі. 
       PROGRAM PROIZV; 
       CONST N=20; 
       VAR K,N:INTEGER; 
       X:ARRAY [1..100] OF REAL; S: REAL; 
      BEGIN WRITLEN ('Массив элементтерінің санын енгіз'); 
      READ (N); FOR K:=1 TO N DO IF X[K]> 5 THEN 
      S:=S*X[K]; 
      WRITELN ('5 -тен ҥлкен  элементтер ќосындысы=',S:7:2); END. 
 
3.  Массивтің  таќ  номерлері  элементтерінің  ішінде  0-ге  тең  элементтерінің 
санын шығару. 
 
      PROGRAM POV

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 62-сі 
 
 
62 
      TYPE MAS=ARRAY[1..10] OF REAL; 
      VAR K: ITEGER; X:MAS; S: REAL; 
      BEGIN 
      FOR K:=1 TO 10 DO READ (X[K]); 
      S:=0; 
      FOR K:=0 TO 9 DO BEGIN K:=K+1; IF X [K]=0 THEN 
      S:=S+1; END; 
      WRITELN ('0-ге тең элементтер саны=',S:7:2); END. 
 
4. Массивтің жҧп номерлері элементтерінің ішінде 5-тен артыќ элементтерінің 
номерін экранға шығару. 
 
       PROGRAM POV; 
      TYPE MAS =ARRAY [1..10] OF REAL; 
      VAR K: INTEGER; X:MAS; S:REAL; 
      BEGIN 
      FOR K:=1 TO 10 DO READ (X[K]); 
      S:=0; 
      FOR K:=1 TO 10DO 
      BEGIN K:=K+1; IF X[K]>5THEN 
      WRITELN ('5-тен  ҥлкен элементтер саны =',K); END'END. 
 
5.Массивтің бҥтін элементтерін шығару. 
 
         PROGRAM 2PR2; 
        CONST N=5; 
        VAR A:?ARRAY [1..N] OF REAL; 
        P,K:INTEGER; 
        BEGIN 
        FOR K:=1 TO N DO 
        IF A [K]=TRUNC(A [K]) THEN P:=P+1; 
        WRITELN(?бҥтін элементтер=?,P); END. 
 
6.Массивтің жҧп элементтерінің санын табу. 
 
      PROGRAM PR3; 
     CNST N=15; 
     VAR A: ARRAY[1..N]OF INTEGER; 
     P,K,I:INTEGER; 
     BEGIN 
     FOR K:=1 TO N DO 
     IF ODD(A[K]) THEN P:=P+1; 
     I:=N-P; 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 63-сі 
 
 
63 
    WRITELN('Жҧп элементтер саны=',);  END. 
 
7. Массивтің таќ элементтерін экранға шығару. 
 
     PROGRAM NESHETN
     LABEL 1; 
     CONST N=15; 
     VAR A:ARRAY [1..N] OF INTEGER; 
     P,K:INTEGER; 
     BEGIN 
     FOR K:=1 TO N DO READ (A[K]); 
     P:=0; 
     FOR K:=1 TO NDO  
     BEGIN 
     IF ODD (A[K]) THEN GOTO 1 ELSE 
    WRITELN(?Таќ элемент=?,A[K]); 
    1:END;END. 
 
8.Массивтің ең ҥлкен элементін шығару. 
 
       A) DOWNTO операторымен 
       PROGRAM MAX; CONST N=10; 
      VAR A:ARRAY [1..N] OF REAL; P:REAL; K,I:INEGER; 
      BEGIN FOR K:=1 TO N DO READ ( A[K]); 
      P:=A[N]; I:=N; 
      FOR K:=N DOWNTO 1 DO 
      IF A[K]>P THEN BEGIN I:=K; P:=A[K] END; 
     WRITELN('Ең ҥлкен элемент='A[I]:4:2); 
     END. 
 
В) FOR    ТО операторымен 
     PROGRAM MAX; 
     CONST N=10; 
     VAR A:ARRAY [1..N]OF REAL; P:REAL; 
     K,I:INTEGER; 
     BEGIN 
     FOR K:=1 TO N DO READ (A[K]); 
     P:=A[1]; I:=N; 
     FOR K:=1 TO N  DO 
     IF A[K] >P THEN BEGIN I:=K; P:=A[K] END; 
     WRITELN (?=Ең ҥлкен элемент?,A[I]:4:2); 
     END. 
 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 64-сі 
 
 
64 
9. Спортсмендерге ќорытынды баға  шығару программасы. 
(  Гимнастика  жарысында    спортсмендердің  жаттығуларын  10  тҿреші 
бағалайды.  
Ќорытынды  баға  шығарғанда,  жарыс  ережесі  бойынша    жалпы  бағадан 
спортсменнің ең тҿменгі жєне  ең жоғарғы  алған бағаларын бір- бірден алып 
тастап,   арифметикалыќ ортасын шығарады. 
 
        PROGRAM SRBALL; 
        VAR X:ARRAY [1..10] OF INTEGER; 
        A: REAL; K,S, MAX, MIN:INTEGER; 
       BEGIN 
       FOR K:=TO 10 DO READ (X[K]); 
       MIN:=X[1]; 
       FOR K:=2 TO 10DO 
       IF X[K]>MAX THEN MAX:=X[K]; 
       S:=0; 
       FOR K:=1 TO 10 DO S:= S+X[K]; A:= (S-MIN-MAX)/8; 
       WRITELN (?Ќорытынды баға A=?,A[I]:7:3); 
       END. 
 
10. Массив элементтерін кему бойынша реттеу. 
 
       PROGRAM UBIV; 
      VAR  K,I:INTEGER; 
          X:ARRAY [1..10] OF INTEGER; 
          S,MAX,A:INTEGER; 
          BEGIN 
          FOR K:=1 TO 10 DO READ (X[K]); 
          FOR K:=10 DOWNTO I DO 
          IF X[K]> MAX THEN 
          BEGIN A:=K; MAX:=X[K]) END; 
          X[A]:=X[I]; 
          X[I]:=MAX; 
          END; 
          FOR K:=1 TO 10 DO WRITELN ('X[K]:5); 
          END. 
 
11.Сыныптағы    ҽр  оќушының  ҥлгерім  проценті  берілген,  ҥлгерімі  ең  тҿмен 
оќушының  сыныптың  орта  ҥлгерім  процентіне  жетуі  ҥшін  ҥлгерімін  ќанша 
процентке арттыру керектігін есептеу программасы. 
 
               PROGRAM UKP; 
               VAR K,I:INTEGER; 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 65-сі 
 
 
65 
               X:ARRAY [1..20] OF REAL; 
               S,MIN,A:REAL; 
                  BEGIN 
                  PEREAT 
                  READLN (X[1]>0); 
                  UNTIL (X[1]<101) AND (X[1]>0); 
                  MIN:=X[1]; S:=MIN; 
                  FOR K:=2 TO 20 DO 
                        BEGIN 
                        REPEAT 
                        READLN (X[K]); 
                        UNTIL (X[1]<101) AND (X[1]>0); 
                        S:=S+X[K]; 
                        IF MIN>X[K]  THEN MIN:=X[K] 
                        END; 
          WRITELN(?ҥлгерімді-',(S/5-MIN):7:2,'- процентке кҿбейту ќажет'); 
                        END. 
 
9 Файлдардың тҥрлері 
 
Осыған  дейін,  біз  мҽліметтерді  пернетақтадан  негізіп,  оларды  экранға 
шығардық, программа жҧмысы кезінде олар компьютердің оперативті жадында 
сақталатын  да,  есептеулер  біткеннен  кейін  бҧл  мҽліметтер  жоғалып  кететін. 
Жҧмыс нҽтижесін келешекте пайдалана алу ҥшін, мысалы, оларды есептеулерге 
пайдалану  ҥшін  немесе  жаңа  мҽліметтерді  алу  ҥшін,  оларды  есте  сақтап  қалу 
керек.  Ондай  тҽсілдердің  бірі  мынадай:  нҽтиже  экранға  шыққан  соң  қолға 
қаламсап  (қарындаш)  жҽне  бір  бет  қағаз  алып,  бҧл  мҽліметтерді  жазып  алу. 
―Дербес компьютерлер‖ дҽуірінің басында оларды ―ҥй тапсырмасы‖ деп атаған 
да, шын мҽнінде солай болған. Қазіргі кездегі дербес компьютерлердің барлығы 
ақпаратты  сақтауға  арналған  арнайы  қҧрылғылармен  жабдықталған. 
Қызметтеріне  қарай  оларды:  магниттік  ақпарат  тасымалдаушылар  немесе 
жазылатын 
CD- 
дискілер 
деп 
атайды. 
Ақпаратты 
сақтау 
осы 
тасымалдаушыларда  ҧйымдастырылады,  бҧл  жағдайда  біз  алған  нҽтижелерді 
солардың  жадында  сақтаймыз.  Барлық  мҽліметтер  осы  тасымалдаушыларда 
файлдар тҥрінде сақталады.  
Файл 
дегеніміз 
– 
мҽліметтер 
сақтауға 
арналған 
сыртқы 
тасымалдаушыдағы жадының ат қойылған аймағы (бҿлігі). 
File  (ағылшын  тілінен  аударылғанда) бума,  іс  қағаздар жинағы, сонымен 
қатар ақпаратты сақтау деген мағынаны білдіреді. 
Borland  Pascal-да  файлдарды  екі  негізгі  белгісі  бойынша  топтастыруға 
болады: 
a)
 
файлдың типі бойынша (оның логикалық қҧрылымына ) 
b)
 
файл элементтеріне қатынау тҽсілі бойынша 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 66-сі 
 
 
66 
Типтері бойынша файлдар шартты тҧрде ҥш тҥрге бҿлінеді: 
־
 
мҽтіндік файл; 
־
 
типтік файл; 
־
 
типтік емес файл. 
Біз кҿбінесе мҽтіндік жҽне типтік файлдармен жҧмыс істейміз. 
Қатынау тҽсілі бойынша файлдар келесідей бҿлінеді: 
־
 
Тікелей қатынау файлдары 
־
 
Кезекпен қатынау файлдары 
Олардың  айырмашылығы  тікелей  қатынау  файлдарында  арнайы 
процедуралар  жҽне функцияларды  пайдалана отырып, мҽліметтерді, олардың 
файлдағы  орнына  тҽуелсіз,  оқуға  немесе  жазуға  болады,  ал  кезекпен  қатынау 
файлында  оның  ортасында  немесе  соңында  тҧрған  мҽліметті  оқу  ҥшін,  оның 
алдындағы  мҽліметтердің  барлығын  оқуға  тура  келеді.  Мҽтіндік  файлдар 
кезекпен  қатынау  файлдарына  жатады,  ал  типтік  файлдар  тікелей  қатынау 
файлдарыа жатады. 
 
9.1 Мәтіндік файлға мәліметтер жазу.  
Бір өлшемді массив 
 
Ең  қарапайым  файл  типі  мҽтіндік  файл  болып  табылады.  Бҧл  файлдағы 
мҽліметтер  типтік  жҽне  типтік  емес  файлдардағыдай  машиналық  кодта  емес, 
сан, ҽріп жҽне басқа пернетақта символдары тҥрінде (ASCII кодында) беріледі. 
Сондықтан  мҧндай  файлдар  мазмҧны  оңай  қаралады,  оңай  ҿзгереді  жҽне 
оларды  кез  келген  мҽтіндік  редактордың,  соның  ішінде  Borland  Pascal 
ортасының да кҿмегімен ҿзгертуге болады. Ҿздеріңіз білетіндей 2.1.2.-ні  қара, 
мҽтінді теру кезінде жаңа жолды енгізу ҥшін ―Enter‖ пернесін басу керек, осы 
кезде  арнайы  код  гинерацияланады—ол  жол  соңы  коды,  ал  файлды  сыртқы 
сақтау  қҧрылғысына  жазған  кезде  де  арнайы  код  гинерацияланады—ол  файл 
соңы коды. Мҽтіндік файлды оқығанда бҧл кодтар кҿрінбейді. 
 
Келесі есепті шешіп кҿрейік: Пернетақтадан бірнеше сандар енгізіп, 
оларды ―mayFile.in‖ атты мҽтіндік типтегі файлға жазу керек. 
 
Есепті кезеңдерге бҿлейік: 
1)
 
пернетақтадан мҽліметтерді енгізу 
2)
 
оларды   ―mayFile.in‖ атты файлға жазу керек. 
 
Бірінші кезеңді орындау ҥшін: 

 
пернетақтадан  енгізілетін  сандардың  мҿлшерін  (массив  ҿлшемін) 
кҿрсету керек 

 
Сан  мҿлшерін  білген  соң,  параметрлі  циклді  қолдану  арқылы 
массив элементтеріне осы сандардың нақты мҽндерін меншіктейміз 
Осы  ҽрекеттерді  орындау  ҥшін  қолданылатын  айнымалыларды 
сипаттаймыз.  Айталық,  санымыз  100-ден  кҿп  емес  жҽне  олар  басқа  да 
процедураларда  қолданылатындықтан,  оларды  ауқымды  айнымалыларды 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 67-сі 
 
 
67 
баяндау блогында сипаттаймыз. 
рrogram Misal_F1; 
var 
San: array [1..100] of integer; 
i, SanMolcher: integer; 
 
Мҽліметтерді енгізу процедурасы  келесі тҥрде болады: 
procedure init; begin readln (SanMolcheri); 
for i:=1 to SanMolcheri do 
begin 
write (―San[―,i,‖]=‘); 
readln(San[i]); 
end; 
Мҽліметтерді  ҿңдеу  процедурасы  ҽзірге  бізге  қажет  емес,  сондықтан  ол 
қызмет атқармай-ақ қойсын. 
procedure work ; 
begin  
end; 
    
Енді екіншісі кезеңді қарастырайық, яғни мҽліметтерді «mayFile.in» 
атты  мҽтіндік  типтегі  файлға  жазу  керек.  Алдымен  ҿз  файлмызды 
байланыстыратын,  айналымның  атауын  беру  керек.Айталық,  ол  айналымның 
атауы FileOut болсын, содан кейін біз оны мҽтіндік файл ретінде сипаттаумыз 
керек. Бҧл айнымалыны шығару процедурасында пайдаланатын болғандықтан, 
оны жергілікті айнымалы ретінде сипаттаймыз: 
                            var 
                            FileOut: text; 
Одан  кейін  біз  программаға,  ―мҽтіндік‖  типтегі  FileOut  атты 
айнымалының,  біздің  ―mayFile.  in‖  атты  нақты  файлмызды  белгілейтінін 
кҿрсетуіміз  керек.  Ол  ҥшін  assign(Name  Var,  Name  File)процедурасы 
қолданылады.  Name  Var—бҧл  файлды  белгілеу  ҥшін  берілген  айнымалы  аты, 
біздің жағдайда Name Var—дың орнына File Out сҿзін жазасыз. NameFile—бҧл 
біз жҧмыс істейтін файлдың аты, біздің жағдайда‖mayFile.in‖. 
Файл  аты  мен  оның  кеңейтілуінен    басқа  орналасқан  орнына  қарай 
сипатталатыны  да  белгілі.  Мысалы,‖c,\bp\bin\MyFile.in‖.  Ал  егер  толық  аты 
берілмеген жағдайда, ҥнсіз келісім бойынша сіздің программаңыз  орналасқан 
ағымдағы  каталог  қолданылады.  Енді  сіз  берілген  файлды  ашып,  оған 
мҽліметтер  жазылатындығын  кҿрсетуіңіз  керек.  Ол  ҥшін  rewrite  (Name 
Var)процедурасы қолданылады. Мҧндағы, Name Var-бҧл файлды белгілеу  ҥшін 
берілген  айнымалы  аты,  біздің  жағдайда  Name  Var—дың  орнына    FileOut   
атауы жазылады.  rewrite( 
Name  Var)  процедурасы—файлды  жазу  ҥшін  ашады  жҽне  кҿрсеткішті 
файлдың басына орналастырады. 
Енді  мҽліметтерді  файлға  жазуға  бҽрі  дайын.  Ол  ҥшін  бҧрынан  белгілі 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 68-сі 
 
 
68 
Write() жҽне Write() процедураларын қолданамыз. Жазулар экранға емес файлға 
жазылуы  ҥшін,  мҽліметтерді  шығару  бағытын  кҿрсетеміз.  Яғни,  жақшаның 
ішіндегі  мҽліметтерді  жазатын  айнымалы  атауының  алдында,  бізді  файлмен 
байланыстыратын  assign()  процедурасындағы  айнымалы  атуын  кҿрсетеміз. 
Айталық,  берілгендерді  шығыс  файлына  бір  жолға  жазу  керек  болсын,  бҧл 
жағдайда бірінші  мҽн  ол енгізілетін сандардың  мҿлшері болады.  Жаңа   жолға 
кҿшу  болмайтындықтан,Write()  процедурасын  қолданып,  бастапқыда  файлға  
SanMolcheri  айнымалысын  мҽнін  жазамыз  да,  содан  кейін  параметрлі  циклді 
пайдаланып  енгізу  процедурасында  енгізілген  сандарды  жазамыз.  Барлық 
мҽліметтер  файлға  жазылып  болған  соң,  файлды  жазу  керек.  Ол  Close() 
процедурасының кҿмегімен орындалады.  
Close(Name  Var)  процедурасы—файлдың  соңына,  файл  соңы  белгісін 
жазып,  оны  жабады.  Егер  файл  Close()  процедурасымен  жабылмаған  болса, 
онда мҽліметтер сақталынбайды.  
Мҽліметтерді файлға жазу процедурасы қандай болатынын қарастырып 
кҿрелік: 
procedure exi; 
var 
FileOut:text; 
begin 
assing(FileOut,`mayFile.in`); 
rewrite(FileOut); 
write(FileOut, SanMolcheri); 
for i=1 to SanMolcheri do 
write(FileOut,San[i]); 
close(FileOut); 
end; 
негізі программаның мҽтіні ҿзгеріссіз қалады 
begin 
init; 
work; 
exi; 
end. 
Осы  программаны  ‗Misal_F1‘  атымен  дискіге  жазып,  оны  орындауға 
жіберіңіз. Программа жҧмысын аяқтағаннан кейін, BP редакторының кҿмегімен 
біздің  программамыз  қҧрған  `mayFile.in`  файлын  ашып,  оның  мазмҧнын 
кҿріңіз.  Ҿкінішке  орай  сандар  файлда  бос  орынсыз  тіркесіп  жазылған  болып 
шығады.  Мҧндай  жазбадан  қандай  сандар  жазылғанын  анықтау  қиындық 
тудырады. Бҧл жағдайды қалай тҥзетуге болады?    
Ол ҥшін, сандары бір бірінен дҽл ажыратудың екі мҥмкіндігі бар: 
а.ҽрбір мҽнді бос орын (``)белгісі арқылы бҿліп жазу 
в.ҽрбір мҽнді жаңа жолға жазу (баған бойынша). 
Бірінші  жағдайда  енгізілетін  айнымалы  атауынан  кейін  бос  орын  (``) 

ПОҼК 042-11.1.20/03-2014
 
Баспа  №1 кҥні 11.09.2014 ж.  121 беттің 69-сі 
 
 
69 
белгісін қоямыз. 
write(FileOut, SanMolcheri,``); 
    for i:= to SanMolcheri do 
          write(FileOut,San[i],``); 
екінші жағдай ҥшін, writeln() процедурасын қолданамыз: 
            writeln(FileOut,SanMolcheri); 
              for i=1 to SanMolcheri do 
                  writeln(FileOut, San[i] ); 

Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   11




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

    Басты бет