Программалау тілдерінің негізгі элементтері. Мәліметтердің типтері

Автор работы: Пользователь скрыл имя, 14 Ноября 2013 в 19:57, контрольная работа

Описание работы

Негізгі түсініктер және программалық объектілерді сипаттаудың тілдік құралдары: сөздігі, қызметші сөздер, идентификаторлар, тұрақтылар мен айнымалылар. Программа құрылымы.Мәліметтердің типтерінің түрлері. Мәліметтердің негізгі базалық типтері. Бүтін, нақты, логикалық, сымволдық типтер. Жадта берілуі. Мәндер аралығы. Жасанды типтер. Құрылымды типтер: массив, жазба, жыйын, жол, файыл, стек.

Файлы: 1 файл

pogramma.docx

— 118.97 Кб (Скачать файл)

Шешуі. Программада массив өлшемі нақтылы берілетін болғандықтан N-ді тұрақтылар жариялау тарауында анықтайық, мысалы, N=20. Массив өлшемін өзгерткен кезде N тұрақтысын сипаттауды ғана өзгерту керек.

Program M2;

Const N=20;

 Var X:array[1:N] of real;k:integer;

Max:real;Kmax:integer;

 Begin

For k:=1 to N do X[k]:=random;{кездейсоқ сандармен толтыру}

   Max:=X[1];Kmax:=1;{}

For i:=2 to N do{ең үлкен мәнді іздеу}

    If X[k]>max then

                     Begin

          Max:=X[k];

     Kmax:=k

           End;

Writeln(‘Х-тің бірінші ең үлкен мәні[‘,Kmax,’]=’,max);

End.

Мысал 3. Бүтін санды сызықтық массив берілген. Оның элементтерін мәндерінің өсу реті бойынша реттеу керек.

Шешуі. «Қалқыма әдіс» деген атпен белгілі алгоритмді қолданайық. Бұл тәсілдің идеясы қатар тұрған екі элементтің үлкенін біртіндеп жылжыту арқылы алдымен  N-ші, содан кейін N-1-ші және т.с.с элементтің орнына қоюға негізделген.

Массивті максималды өлшеммен сипаттайық (мысалы, 100), ал нақтылы өлшем N-ді енгізу арқылы анықталатын болады.

Program sortirovka;

 Var N,I,J,P:integer;A:array[1..100] of inte

 Begin

  Write(‘элементтер санын  енгізіңіз:’);readln(N):

   For i:=1 to n do

   Begin

   Write(‘A[’,I,’]-ді енгізіңіз’);readln(A[i]);

    For i:=1 to N-1 do

              Begin

For j:=1 to N-1 do

If A[j]<=A[j+1] then                                                             

                                     Begin P:=A[j];    A[j]:=A[j+1]; A[j+1]:=P;        End;                                                         

                                                                

  End;

    For i:=1 to n do    Write(A[i],’ ‘);

  End.       

Тестілеу: N=10; массив элементтері:1,2,2,2,-1,1,0,34,3,3.

Жауабы:-1,0,1,1,2,2,2,3,3,34.

Мысал 2. N натурал саны берілген. Элементтері осы N санының цифрларынан тұратын массив құру керек.

 

program N20_278;

var  a:array[1..20] of integer;

         n,m,s,k,i:integer;

begin

     write('n:');read(n);

      m:=n; k:=0;

      repeat

        s:=m mod 10;

        writeln(s);

        k:=k+1;

        m:=m div 10;

        a[k]:=s;

      until m=0;

      for i:=k downto 1 do

      write(a[i]);

Тақырыбы: Массивтерді өңдеу алгоритмтері. 

Мазмұны. Массивтерді өңдеудің негізгі алгоритмдері: іздеу, сорттау алгоритмдері, сортталған массивтерді біріктіру. Таңдап сорттау алгоритмдері: сызықтау таңдау, алмастыру арқылы сызықтық таңдау. Көпіршік тәсілі. Шелл тәсілі.

Екіөлшемді массив – матрицаны сақтайтын мәліметтер құрылымы. Матрицадағы әрбір элемент қиылысында ол элемент орналасқан жол мен бағана номері арқылы анықталады.

Паскальда екіөлшемді массив элементтері сызықтық массив болатын  массив ретінде қарастырылады. Келесі екіөлшемді массивтерді сипаттамалары  тепе – тең:

Var M:array[1..20] of array[1..20] of real;

Var M:array[1..20,1..20] of real;

Көп жағдайда екінші сипаттау тәсілі қолданылады. Екіөлшемді массивтің  элементтері екі индексті айнымалымен  көрсетіледі [4]. Мысалы: M[3,5]. Әдетте  бірінші индексті жолдың номерімен, ал екіншісін бағана номерімен байланыстырады.

1-мысал. Пифагор матрицасын (көбейту кестесін матрица түрінде) құрып, оны экранға шығару керек.

Шешуі. Пифагор матрицасының элементтерінің мәндері келесі түрде есептеледі: P[i,j]=i*j. Матрицаны есептеу және шығару екі сатылы цикл арқылы жасалады. Экранға шығаруды тіктөртбұрышты кесте түрінде ұйымдастырамыз.

Program Pifagor;

Var P:array[1..9,1..9] of integer;I,j:integer;

Begin

  For i:=1 to 9 do

   For j:=1 to 9 do

  P[I,j]:=i*j;

  For i:=1 to 9 do

       Begin

        For j:=1 to 9 do

  Write(P[I,j]:4);

   Writeln;{жаңа жолға өтіп, баспаға шығару} 

     End;

End.  

2-мысал. N-ші ретті матрицаны келесі үлгі бойынша толтыру керек.

1 2 3   ......n-2 n-1 n

2 1 2   …..n-3 n-2 n-1

3 2 1   …..n-4 n-3 n-2

… … … … … …

n-1 n-2 n-3  ….2 1 2 

n n-1 n-2   …3 2 1

Шешуі. Алгоритм матрицаның екі қасиетіне негізделген: ол бас дигональға қатысты симметриялы, яғни  A[i,j]=A[j,i] және матрицаның жоғарғы үшбұрышының элементтері A[i,j]=j-i+1 формуласы арқылы есептеледі. Программа n=10 үшін құрастырылған.

Program Massiv;

 var i,j,k,n:integer;A:array[1..10,1..10] of integer;

  begin

    write('Матрицаның  ретін көрсетіңіз:');readln(n);

    for i:=1 to n do {Бірінің ішіне бірі орналасқан циклдар. Ішкі цикл}

     for j:=1 to n do

       begin   {Бас диагональ бойындағы элементтерді сұрыптау}

        A[i,j]:=j-i+1;

        A[j,i]:=A[i,j];{матрица  диагоналі мен оның жоғарғы  жағы}

       end;

      for i:=1 to n do

        begin

         writeln;

           for j:=1 to n do

         write(A[i,j]:4);

        end;

   end.

Тақырыбы:Ішкі программалар. Процедуралар мен функциялар. Параметрлерді ұйымдастыру механизімі.

Мазмұны. Ішкі программалар. Стандартты модульдер жинақтары. Қолданушының процедуралары мен функциялары. Рекурсия. Параметрлер-мәндер. Параметрлер-айнымалылар. Параметрлер-процедуралар. Параметрлер-функциялар. Параметрлердің жұмыс аймақтары.

Ішкі программа  – қосымша алгоритмді жүзеге асыратын программа. Негізгі программа  - есепті шығарудың негізгі алгоритмін жүзеге асыратын және  ішкі программаларды шақыруды ұйымдастыратын программа. Паскальда ішкі программалардың екі түрі бар: ішкі программалар-функциялар және ішкі программалар-процедуралар. Программада қолданылатын стандартты емес ішкі программалар ішкі программалардағы сипаттау тарауында сипатталуы керек.

Ішкі программа-функцияны сипаттау форматы:

Function < функция аты> (<параметрлер-аргументтер>):<функция   типі>;

<блок>;

Функция типі тек жай типті  ғана болуы мүмкін. Блок функцияның өзінің дербес сипаттамасын және  оператор тарауынан тұрады.

Ішкі программа-процедураны сипаттау  форматы:

Procedure <процедура аты> (<параметрлер>);

  <блок>;

Нәтиже ретінде процедура  шақырушы программаға көптеген жай  немесе құрылымдық шамаларды қайтаруы немесе ешқандай мән қайтармауы мүмкін. Процедура параметрлері арасында аргументтер, сонымен қатар нәтижелер де көрсетіледі. Параметрлер-нәтижелер міндетті түрде  параметрлер-айнымалылар болуы керек.(var қызметші сөзінен кейін бейнеленген).Процедураны  шақыру-жеке оператор.

Шақырушы программа және ішкі программаның арасында мәліметтер алмасуы тек параметр арқылы ғана емес, сонымен қатар глобальды  айнымалылар арқылы да жүзеге асырылады [1].

1-Мысал. Екі жай бөлшектердің айырымын есептеу керек:

    натурал сандар) 

Нәтижені қарапайым қысқармайтын e/f  бөлшегі ретінде алу керек.

Шешуі. Бөлшектерді есептеу ережесі бойынша алымы мен бөлімін есептеу және оларды ең үлкен ортақ бөлгішке қысқарту керек (ЕҮОБ).Екі санның ЕҮОБ-ін есептеуді, математикадағы белгілі Евклид алгоритмін пайдалана отырып ішкі программа түрінде құрайық.

Бұл есепті шешудің программасының екі нұсқасын құрайық: ішкі программа-функциямен және ішкі программа-процедурамен.

1-Шешуі 

Program Sub 1;

Var A, B,C, D, G, E, F: integer;

Function EYOB (M, N: integer) :integer; {функцияны сипаттау}

begin {Евклид алгоритмі бойынша}

while M<>N do {екі натурал санның}

              if M>N then M:=M-N {ЕҮОБ есептелуі}

                          else  N:=N-M;

             EYOB:=M

end;

begin write (‘Бөлшектердің алымдары мен бөлімдерін енгізіңіз:’);

      readln (A, B, C, D);

      E:=A*D-B*C; {Бөлшектерді алудың және қысқартудың}

        F:=B*D;{негізгі программасы}

    If E=0 then writeln (E) {Функцияға қатынау}

           else begin {екі рет орындалады}

                E:=E div EYOB (Abs (E), F);

                F:=F div EYOB (Abs (E), F);

                writeln (‘Жауап : ’ , E, ‘ / ’, F)

                end;

end. 

2-шешуі

Program Sub 2;

Var A, B, C, D, G, E, F:integer;

{Евклид алгоритмі бойынша  екі натурал санның ЕҮОБ есептеу  процедурасы}

   Procedure Nod (M, N:integer; Var K:integer);

   Begin                             

while M<>N do               

     if M>N then M:=M-N

            else  N:=N-M;

             K:=M

end;

{Негізгі программа. Мұнда  процедураға қатынау бір рет  болады. Нәтиже G айнымалысында алынады  }

begin write (‘Бөлшектердің алымдары мен бөлімдерін енгізіңіз:’);

      readln (A, B, C, D);

       E:=A*D-B*C;

       F:=B*D;   

   If E=0 then writeln (E)

          else begin

               EYOB (abs (E), F, G);

               E:=E div G;

               F:=F div G;

               writeln (‘Жауап : ’ , E, ‘ / ’, F);

              end;

end.

2-Мысал. N бүтін оң саны берілген. N факториалды есептейтін рекурсивті ішкі программа-функция құру керек.

Шешуі. Рекурция дегеніміз – процедуралар мен функциялардың құрамына кіретін операторлардың орындалу барысында өзін-өзі шақыру арқылы ұйымдастырлатын есептеу процесі . N! Функциясын келесі формулаға

              1                   N=0 болғанда


  N!=     

              (N-1)! N     N>0 болғанда

 

сүйене отырып рекурсивті анықтауға болады.

Функцияны Паскальда сипаттау:

Function factorial (N:integer):integer;

Begin

       If N=0 then factorial:=1

              else  factorial:= factorial *(N-1)*n    end;

 9- дәріс. Жолдар. Жолдарды өңдеу.

Мазмұны. Жол типінің сипаттамасы. Жолдық өрнектер. Жолдық шамаларға қолданылатын функциялар мен процедуралар.  Жолдарды өңдеу алгоритмдері. Сөйлемнің сөздер санын анықтау. Сөзді кері жазу.

Жол-символдардың реттелген тізбегі. Мәліметтердің жолдық типі-Турбо-Паскальдағы құрылымдық тип. Жолдық шаманың әрбір символы жадыдан (ASCII коды) 1байт орын алады. Жолдағы символдар саны оның ұзындығы деп аталады. Жолдың ұзындығы 0 мен 255 аралығында болуы мүмкін.

Жолдық тұрақты (константа) апострофтың ішіне жазылатын символдар тізбегі. Мысалы, ‘Бұл жолдық тұрақты’, ‘272’. Бірінен кейін бірі қойылған екі апостроф (‘’) бос жолды, яғни ұзындығы нөлге тең болатын жолды білдіреді.

Жолдық айнымалы айнымылыларды сипаттау бөлімінде сипатталады.

Var <идентификатор>:string[<жолдың ең үлкен ұзындығы>].

Мысалы: Var Name:string[20].

Жолды сипаттағанда оның ұзындығын  көрсетпесе де болады.

Мысалы: Var slovo:string. Бұл жағдайда жол ұзындығы ең үлкен шамаға, яғни 255-ке тең дегенді білдіреді.

Жолдың элементтері оның атынан кейін индекстері тік жақшаға  алынған жеке элементтер түрінде  беріледі.

Мысалы: N[5], S[i], Slovo[k+1].

Жолдың бірінші символының номері 1-ге тең болады. Индекс тұрақты  оң, айнымалы, бүтін типті өрнек  болуы мүмкін. Индекстің мәні сипаттаудан  аспауы керек.

String және char типтері өзара  сәйкес келеді. Жолдар мен символдар  бір өрнекте қолданылуы мүмкін[5].

Жолдармен жасалатын  амалдар

Біріктіру амалы (конкатенация +)-бірнеше жолды бір жолға біріктіру үшін қолданылады. Жолдық тұрақтылармен бірге жолдық айнымалыларды да біріктіруге болады.

Мысалы:‘Майра’+’терезе’+’жуды’. Нәтижесінде ‘Майра’+’терезе’+’жуды’ деген жолы шығады. Қорытынды жолдың ұзындығы 255-тен аспауы керек.

Қатынас амалдары:=,<,>,<=,>=,<>. Қатынас амалдары екі жолды салыстыруға мүмкіндік береді. Нәтижесінде логикалық мән ( True немесе False) алынады. Қатынас амалының орындалу үстемдігі біріктіру амалына қарағанда әлдеқайда төмен. Жолдврды салыстыру солдан оңға қарай бірінші сәйкес келмейтін символға дейін жүргізіледі. Сәйкес келмейтін бірінші символдың номері символдарды кодтау кестесінде үлкен болса, онда сол жол үлкен деп есептеледі. Егер жолдардың ұзындығы әртүрлі , бірақ жалпы жағдайда символдар бір-біріне сәйкес келетін болса, онда жолдардың әлдеқайда қысқарағы әлдеқайда ұзынырағына қарағанда кіші деп есептеледі. Егер жолдардың ұзындығы мен құрамындағы символдар бір-біріне сәйкес келсе, олар тең болады[2]. Мысал 1  

Өрнек

Нәтижесі

‘True1’<’True2’

True

‘Mother’>’MOTHER’

True

‘Мама’<>’ Mама’

True

‘Cat’=’Cat’

True


Жолдық процедуралар мен функциялар

Жолдарды өңдеуге арналған кез келген әрекеттерді бірөлшемді массивті өңдеу алгоритмін қолданып программалауға болады. Бірақ Turbo Pascal-дың  да құрамында, басқа программалу  тілдері сияқты, мәтіндерді өңдеуге  арналған процедуралар мен функциялардан  тұратын типтік амалдар жиыны  бар.

Символдарды өшіру  және қою процедуралары

Информация о работе Программалау тілдерінің негізгі элементтері. Мәліметтердің типтері