Коммерциялық емес акционерлік қоғамы
АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС УНИВЕРСИТЕТІ
Инженерлік кибернетика кафедрасы

 

АЛГОРИТМДЕУ ЖӘНЕ ПРОГРАММАЛАУ

5В074600- Ғарыштық техника және технологиялар мамандығының студенттеріне
зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар

 

Алматы 2013

ҚҰРАСТЫРУШЫЛАР: Сауанова К.Т. Омарова Г.А. «Алгоритмдеу және программалау» 5В074600 - Ғарыштық техника және технологиялар мамандығының студенттеріне зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар. – Алматы: АЭжБУ, 2013- 47

Алгоритмдеу және программалау» пәнінен 5В074600- Ғарыштық техника және технологиялар мамандығының студенттеріне арналған зертханалық жұмыстар. Жинақ 10 зертханалық жұмыстан тұрады. Әр жұмыста Си/Си++ тілінде программа құру мысалдары, тапсырмалар, тапсырмаларды орындауға қажет әдістемелік нұсқаулар және бақылау сұрақтары келтірілген.

Без.-5, Кест.-5, әдеб.көрсеткіші-14 атау.

Пікір беруші: доцент Гали К.О.

“Алматы энергетика және байланыс университеті” коммерциялық емес акционерлік қоғамының 2013 ж. қосымша баспа жоспары бойынша басылады.

 

©”Алматы энергетика және байланыс университеті”  ҚЕАҚ, 2013 ж

 

Мазмұны

Кіріспе

4

Зертханалық жұмыс № 1. Құрылымы сызықты алгоритмдер                     

5

Зертханалық жұмыс № 2. Шартты алгоритмдер                                                                  

9

Зертханалық жұмыс № 3. Қайталау алгоритмдері                                        

13

Зертханалық жұмыс № 4. Бір өлшемді массивтер                                       

17

Зертханалық жұмыс № 5. Екі өлшемді массивтер                                        

19

Зертханалық жұмыс № 6. Жолдар                                                                  

22

Зертханалық жұмыс № 7.Функциялар                                                          

26

Зертханалық жұмыс№ 8. Файлдан енгізу/шығару                                      

30

Зертханалық жұмыс № 9. Құрылымдар                                                        

33

Зертханалық жұмыс № 10. Мәліметтерді іздеу және сұрыптау           

38

А қосымшасы

44

Б қосымшасы                                                                                                   

45

Әдебиеттер тізімі                                                                                       

46

Кіріспе

 

«Алгоритмдеу және программалау» пәні бойынша зертханалық жұмыстарды орындауға арналған әдістемелік нұсқауларда зертханалық жұмыстардың сипаттамасы: орындауға көмек ретінде әдістемелік нұсқаулар, мысалдар, тапсырмалар, өзін өзі бақылау сұрақтары берліген. Зертханалық жұмыстарды толық көлемде орындау Си/Си++ тілінің құралдарын пайдалану білімдерін және дағдыларын тереңдету және бекіту мақсатына жетуді қамтамасыздандырады.

Әр әдістемелік нұсқауда зертханалық жұмыстың тақырыбына тәуелді, орындауға қажет минималды теориялық материал, Си/Си++ тілінде программа құру мысалдары, тапсырмалар, тапсырмаларды орындауға қажет әдістемелік нұсқаулар және бақылау сұрақтар келтірілген.

Зертханалық жұмыс 1. Сызықты құрылымды алгоритмдер

Жұмыс мақсаты: tурbo C++ ортасымен және Си/Си++ тілінде жазылған программа құрылымымен танысу, мәліметтерді енгізу/шығаруды, меншіктеу операторының жұмысын, өрнектерді жазу тәсілдерін меңгеру.

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

1.1   Турbo C++ ортасын зерттеу

1.1.1 Турbo C++ ортасын іске қосқаннан соң программа мәтінін теру үшін FILE-NEW танданыз (1 суретті қара).

1 сурет – Жана файлды құру

1.1.2 Программа мәтіні терілген соң бағдарламаны компиляциялау қажет:

2 сурет- Программаны  қомпиляциялау

 

Компиляция синтаксистік және логикалық қателерді шығарады.

1.1.3 Қателер түзетілген соң программаны орындауға жібереміз (3 суретті қара).

3 сурет- Программаны орындауға жіберу

1.1.4 Сұхбаттасу терезесінде программаға қажет мәліметтерді енгіземіз (4 суретке қара).

4 сурет- Мәліметтерді енгізу

1.1.5 Программа орындалуының нәтижесін көру үшін пайдаланушының терезесіне көшеміз:

5 сурет - Нәтижесін көру

1.2 Программа құрылымы

С/С++ тегі программаның жалпы түрде берілген құрылымы:

#include <1 кітапханының атауы>

#include < 2 кітапхананың атауы>

          ...

#include "1 тақырыпша файлдың атауы"

#include "2 тақырыпша файлдың атауы"

          ...

// функциялардың прототиптері (аталуы)

// желгілікті идентификаторлар (типі, айнымалылар және т.б.)

void main()

{

  // айнымалылардың сипатталуы

  // оперторлар бөлімі            

}

// функциялардың жүзеге асырылуы

 

Меншіктеу операторынын синтаксисі:

y = x;

мұнда y- айнымалы, x - өрнек. Өрнек мазмұнына тұрақтылар, айнымалылар, функциялардың аттары, операциялардың белгілері, жақшалар кіруі мүмкін (А қосымшасының 1 кестесін қара).

 

1.3 Енгізу шығару функцияларының сипатталуы

 

- printf функциясы

printf(<басқарушы жол>, <айнымалылар тізімі>);

- putchar функциясы.

int putchar(int character);

- puts функциясы

Мысалы:    puts("Привет");

-  scanf функциясы

scanf(<басқарушы жол>, <айнымалылар тізімі>);

- gets() функциясы. Стандартты кіріс ағынынан символдық жолды оқып, көрсеткішпен берілген адреске орналастырады.

сhar *gets ( char *f);

- getchar функциясы. Стандартты кіріс ағынынан символды оқиды.

 int getchar (void);

Математикалық функциялардың сипатталуы math.h және stdlib.h    (Б қосымшасын қара).

 

Мысалы: өрнек мәнін есептейтін программаны құру.

 

x=2.444, y=0.0869, z=-130.0

,

жауабы: -0.49871.

 

Программа мәтіні төменгідей болуы мүмкін:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define x 2.444

#define y 0.00869

#define z -130.0

 

void main(void)

{

 double rezult,dop,a,b,c;

    clrscr( ); /*  экранды тазарту */

      dop=fabs(y-x);

       a=pow(x,y+1)+exp(y-1);

       b=1+x*fabs(y-tan(z));

      c=0.5*pow(dop,2)-pow(dop,3)/3;

      rezult=a/b*(1+dop)+c;

    printf("\a\n Zhayaby:  rezult=%lf, Press any key...", rezult);

  getch( );  /* Кез келген клавиша басылғанша кідірту*/

 

}

 

2 Тапсырмалар

 

2.1 Тапсырма: y = f(x) функциясы берілсін. Си/Си++ тілінің ережелерін орындап, тапсырма нұсқасы бойынша функцияның мәнін есептейтін программа құрыңыз. Аргументтердің мәндері клавиатурадан енгізілсін. Блок-схемасын құрудан бастаңыз.

 

1.1 кесте- Тапсырмалар нұсқалары

Нұсқа № 

Тапсырма

1

Y=

2

Y=

3

Y=

4

Y=

5

Y=

6

Y=

7

Y=

8

Y=

9

Y=

10

Y=)

11

Y=

 

 

1.1 кестенің соңы

12

Y=

13

Y=

14

Y=

15

 

Y=

 

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

1)  Си тіліндегі программаның құрылымы.

2)  Басқарушы символдардың жұмысын түсіндіріңіз.

3)  printf функциясының синтаксисін жазыңыз және оны пайдалану

мысалын келтіріңіз.

4)  putchar функциясының синтаксисін жазыңыз және оны пайдалану мысалын келтіріңіз.

5)    puts функциясының синтаксисін жазыңыз және оны пайдалану

мысалын келтіріңіз.

6)  scanf функциясының синтаксисін жазыңыз және оны пайдалану

мысалын келтіріңіз.

7)  gets() функциясының синтаксисін жазыңыз және оны пайдалану

мысалын келтіріңіз.

8)  getchar функциясының синтаксисін жазыңыз және оны пайдалану мысалын келтіріңіз.

 

Зертханалық жұмыс № 2. Шартты алгоритмдер

 

Жұмыс мақсаты: шартты алгоритмдерді программалау дағдыларын меңгеру.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

1.1   Шартты оператор

 

Тармақталған алгоритмдерді программалау үшін шартты оператор пайдаланылады.

Шартты оператордың қысқартылған және толық түрі болады:

1)      if (логикалық өрнек)  1 оператор;

2)      if (логикалық өрнек)  1 оператор;

else  2 оператор;

Шартты оператор жұмысын толық түрі үшін  келтірейік:

  <логикалық өрнек> есептеледі. Егер нәтижесі TRUE (ақиқат) болса, онда  <1 оператор> өрнегі есептеледі, <2 оператор>орындалмайды,  ал нәтижесі FALSE (жалған) болса  <1 оператор> орындалмай <2 оператор> орындалады.

Қысқартылған түрі үшін (шартты оператордын else сөзінен кейінгі бөлігінің жоқтығы) онда басқару шартты оператордан соң жазылған операторға беріледі.

 

1.2   Таңдау операторы

 

Өрнек мәніне байланысты бірнеше нұсқалар арасынан бірін таңдау есебінде таңдау операторы қолданылады.

Таңдау операторының синтаксисі:

switch (өрнек)

{

case 1тұрақты:операторлар тізімі; break;

case 2тұрақты:операторлар тізімі; break;

case Nтұрақты:операторлар тізімі; break;

default:операторлар тізімі; break;

}

Таңдау операторының жұмысын былай сипаттауға болады: switch  кілттік сөзінен кейін жақшада жазылған өрнек мәні есептеледі. Содан соң  белгілер арасынан (case 1тұрақты және т.б.) осы есептелген (немесе клавиатурадан енгізілген) мәнге тең белгіні іздейді Табылған жағдайда қос осы белгіден соң қос нүктеден кейін тұрған операторлар орындалады. Егер өрнектің мәні switch операторының бірде- бір белгісіне сәйкес келмесе default кілттік сөзінен кейін тұрған операторлар тізімі орындалады.

(?:) шартты (тернарды) операция

Бір оперантты таңдау үшін пайдаланылады:

Синтаксис : <1операнд> ? <2операнд>:<3операнд>

Мысалы: x= a >b ? a: b;

 

Мысалы: (if шартты операторын пайдалану).

Нөлге тең емес a және b сандары берілсін.  есептеңіз.

a=10; b=5; .

Программа мәтіні:

#include <stdio.h>

#include <conio.h>

    void main( )

      /* if шартты операторының жұмысын көрсету */

       {

            float a,b,c;

               puts(“\n  а және b енгізіңіз:“);

               scanf(“%f%f”, &a, &b);

                   if (a>=b)    c=a/b;

                         else c=b/a;

     printf(“\n c=%f”, c);

  getch();

        }

2 Тапсырмалар

 

2.1 Тапсырма. Шартты операторды пайдаланып берілген өрнектің мәнін есептейтін программа құрыңыз. Қажет мәліметтер клавиатурадан енгізілуі тиіс.

2.1 кесте – Тапсырмалар нұсқалары

Нұсқа № 

Тапсырма

1

2

3

4

5

6

7

8

 

 

 

2.1 кестенің соңы

9

10

 

 

 

11

12

13

14

15

 

 

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

1)  Шартты операторларды бір- бірінің ішінде қолдануға болады ма? Жауабыңызға байланысты мысал келтіріңіз.

2)  Тернарды операциясын пайдалануға мысал келтіріңіз.

3)  Шартты оператордың толық түрін сипаттаңыз.

4)  Шартты оператордың қысқартылған түрін жазыңыз және жұмысын көрсететін мысал келтіріңіз.

5)  Таңдау операторының синтаксисін жазыңыз және жұмысын көрсететін мысал келтіріңіз.

6)  “default” кілттік сөзі қандай қызмет атқарады?

7)  “break” кілттік сөзі қандай қызмет атқарады?

8)  “default” кілттік сөзі болмаған жағдайда басқару қайда беріледі?

 

Зертханалық жұмыс 3. Қайталау алгоритмдері

 

Жұмыс мақсаты: циклді құрылымдарды (қайталау алгоритмдері) программалау дағдыларын меңгеру.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

Си/Си++ тілінде циклді құрылымды алгоритмдерді программалау үшін ыңғайына және есеп шешу жолына қарай бірнеше операторлар бар.

 

1.1 FOR параметрлі қайталау операторының құрылымы

 

for (1 өрнек; 2 өрнек; 3 өрнек) оператор;

мұнда:

-    1 өрнек– цикл параметрінің бастапқы мәнін орнату (инициализациялау);

-    2 өрнек – циклдің жұмысын жалғастыру үшін шартын тексеру жалғасу шартын тексеру;

-    3 өрнек – цикл параметрінің өзгеруі;

-    оператор – тілдің қарапайым немесе құрам операторы.

.

1.2  Кейін шартты қайталау операторы (do-while)

 

Оператордың жазылу синтаксисі:

do <цикл денесі> while (шарт);

do, while – кілттік сөздер;

цикл денесі – кез келген оператор (немесе операторлар жиыны)

шарт-логикалық өрнек.

Циклдің денесі бір рет болса да орындалады, содан соң шарт өрнегінің мәні есептеледі, егер шарт ақиқат болса, циклдің денесі қайталанып орындала береді.

 

1.3           Алдымен шарт қайталау операторы (while)

 

Операторды жазу синтаксисі:

while (шарт)  цикдің денесі;

while – кілттік сөз;

 

Егер «шарт» мәні true (ақиқат) болса, циклдің денесі орындалады,содан соң шарт мәні қайтадан тексеріледі, шарт ақиқат мәнін қабылдағанша циклдің денесі орындалады, егер шарт «жалған» болса, программа басқаруды циклдін тыс бірінші операторына береді.

Мысалы:

 есептейтін программа жазыңыз.  Аралық және соңғы нәтижені экранға шығаратын болсын.

Программа мәтіні:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define n 10    //  

void main(void)

{

  float s; int k;

    clrscr( ); // экранды тазарту

      puts("\n  N3зертханалық жұмыс ЦИКЛ операторлары  ");

      puts("\n ================================ \n");

       s=0;

for (k=1; k<=n; k++)

  {

    s=s+1.0/k;

    printf(" \t\n k=%d s=%f  1.0/k=%f", k, s, 1.0/k);

  }

      puts("\n");

   printf("\a\nЖауабы:  s=%f, Press any key...",s);

  getch( );  /* ENTER пернесі басынғанша кідірту */

}

 

2 Тапсырмалар

 

2.1 Тапсырма

 

3.1 кесте - Тапсырмалар нұсқалары

а) Мәндерін кесте түрінде есеп шығаратын программа құрыңыз.

 

б) dX қадамымен Хбастапқы. дан Хсоңғы интервалында F функциясының мәндерін есептеп кесте түрінде экранға шығару қажет. (a,b,c действительные числа)

 

 

 

 

3.1 кестенің жалғасы

2

3

4

5

6

7

8

,

9

3.2 кестенің соңы

10

 

12

13

14

15

 

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

1)  ”циклдік” деп қандай процессті түсінеміз?

2)  “do ..while”, “while ..do” циклдердің айырмашылығы неде?

3)  “ішкі цикл” деп қандай  циклді атайды?

4)  for  операторы үшін  «үтір» операторының рөлі қандай?

5)  Аяқталмайтын цикл қалай ұйымдастырылады?

6)  Си тілінің синтаксисіне сай  for циклінің деңесі бос болу мүмкін ба?

7)  “do… while” циклі орындалуын шарт жалған болмай тұрып тоқтату қалай жүзеге асырылады?

8)  Цикл операторларының ішінде continue және break операторларының орындалуындағы айырмашылығы неде?

 

Зертханалық жұмыс 4.  Бір өлшемді массивтер

 

Жұмыс мақсаты: есеп шығаруда бір өлшемді массивтерді программалау дағдыларын меңгеру.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

Массив – саны шектелген бір типті элементтерден тұратын мәліметтер құрылымы. Массивтің элементтеріне қол жеткізу элементтердің индекстері арқылы орындалады. Массивтің типі төмендегідей сипатталады:

типі масссивтің_аты [өлшемі]; «өлшем» массивтің өлшемін анықтайды.

 Массивтің элементтерін  клавиатурадан енгізу:

for (i=0; i<N; i++)

 scanf (“%d”, &A[i]);

 

Массивтің элементтерін  экранга шығару:

for (i=0; i<N; i++)

printf (“%d ”, A[i]);

 

Мысалы: бүтін типті а массивінде максималды элементтің  бірінші элементпен орнын ауыстыратын программа жазу қажет. Қосымша теріс және оң сандардың мөлшерін есептеп шығару қажет.

Программа мәтіні:

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

void main(void)

{

  int a[4]={-1,-20,4,100};   //  a массивін хабарлау

     int i,index,zam,max,kp,ko;

       clrscr();

  for (i=0; i<=3; i++)

    printf("%d  ",a[i]);

               max=a[0]; kp=0; ko=0;

      for (i=1; i<=3; i++)

          {

            if (a[i]>max)

               {

                 max=a[i]; index=i;

                 }

          }

       zam=a[0]; a[0]=max; a[index]=zam;

      for (i=0;i<=3;i++)

{

  if (a[i]<0) ko=ko+1;

           else kp=kp+1;

}

    for (i=0; i<=3; i++)

      printf("%d  ",a[i]);/*  массив элементтерін шығару */

           printf("\n   массив элементтерінің оң сандар мөлшері: %d \n",kp);

                   printf(" \n   массив элементтерінің теріс сандар мөлшері: %d",ko);

  getch();}

 

2         Тапсырмалар

 

2.1 Тапсырма. N сандық элементтерден тұратын бір өлшемді массив берілсін. Есепті шешу үшін алгоритмнің блок схемасын құрып, программа жазыңыз.

 

Тапсырмалар нұсқалары:

1)      Элементтерін кері тәртіппен шығарыңыз. 

2)     Алдымен индекстері жұп элементтерді,  содан соң  — индекстері тақ элементтерді шығарыңыз. 

3)     Мәні максималды және минималды элементтердің орындарын ауыстырыңыз.

4)     Соңғы нөлге тең элементінен кейін орналасқан элементтердің қосындысын есептеңіз.

5)     Мәні максималды және минималды элементтердің арасында орналасқан элементтердің көбейтіндісін табыңыз.

6)     Соңғы теріс саннан кейін орналасқан элементтердің бүтін бөліктерінің қосындысын табыңыз.

7)     Абсолюттік мәні бойынша максималды элемент абсолюттік мән бойынша минималды элемент арасында  орналасқан элементтердің көбейтіндісін есептеңіз.

8)     Соңғы он сан алдындағы элементтердін қосындысын есептеңіз.

9)     Бірінші және соңғы он элементтер арасындағы элементтердің қосындысын есептеңіз.

10)      Бірінші және соңғы нөлге тең элементтері арасындағы элементтердің көбейтіндісін есептеніз.

11)      Бірінші және соңғы теріс элементтер арасындағы элементтердің қосындысын есептеңіз.

12)      Бірінші және екінші он сандар арасындағы элементтердің қосындысын есептеңіз.

13)      Бірінші нөлге тең элементтерден соң орналасқан элементтердің абсолюттік мәндерінің қосындысын есептеңіз.

14)      Бірінші теріс элементтен соң орналасқан элементтердің абсолюттік мәндерінің қосындысын есептеніз.

15)      Мәні максималды элементтен соң орналасқан элементтердің қосындысын есептеңіз.

16)      Мәні минималды элементінен соң орналасқан элементтердің қосындысын есептеңіз.

 

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

1)      СИ тілінде массивтің бірінші элементінің индексі неге тең?

2)      Бір өлшемді массив элементіне қатынас жасау тәсілі.

3)      Бір өлшемді массивті инициализация қалай жүзеге асады?

4)      Енгізу-шығару нұсқаулары және массивтерді өңдеу.

5)      Бір өлшемді массив үшін қажет жады көлемі қалай есептелінеді?

6)      Программа орындалу барысында массивтің мазмұнын, шекарасынан шығып кетпеуін кім бақылау қажет?

7)      Егер инициализациялау тізімінде берілген элементтер саны хабарлауда көрсетілген элементтер санынан кем болса не болады?

8)       Егер инициялизациялау тізімінде берілген элементтер саны хабарлауда көрсетілген элементтер санынан артық болса не болады?

 

Зертханалық жұмыс 5.  Екі өлшемді массивтер

 

Жұмыс мақсаты: есеп шығаруда екі өлшемді массивтерді программалау дағдыларын меңгеру.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

Массив – саны шектелген бір типті элементтерден тұратын мәліметтер құрылымы. Массивтің элементтеріне қол жеткізу элементтердің индекстері арқылы орындалады. Массивтің типі төмендегідей сипатталады:

С тілі көп өлшемді массивтерді құруға мүмкіндік береді. Екі өлшемді массив бұл көп өлшемді массивтердің қарапайым түрі. Екі өлшемді массивті бір өлшемді массивтер массиві деп те түсінуге болады.

Екі өлшемді массивті хабарлау:


типі массивтің_аты[екінші өлшемінің  размері][бірінші өлшемінін размері];
10х20 өлшемді массивті сипаттау төмендегідей жазылады:

int d[10] [20] ;

 

Индексі 3, 5 d массивінін элементіне қол жеткізу үшін d[3] [5] деп пайдаланамыз.

Екі өлшемді массивтер матрица түрінде сақталады. Мұнда бірінші индекс жолдар үшін, ал екінші индекс бағандары үшін. Массивте элементтердің жадыда орналасқан реті бойынша жылжитын болсақ оң жақтағы индекс сол жақтағы индекске қарағанда тезірек өзгереді.  Екі өлшемді массивтің жадыда алатын көлемін келесідей есептейді:

байт мөлшері =массивтін екінші өлшемі *массивтің бірінші өлшемі * sizeof (негізгі тип).

 

Бүтін сандардан тұратын, өлшемі 10х 5 жадыда: 10 * 5 * 2, яғни 100 байт алады.

 

Мысалы: екі өлшемді массивке 1-ден 12-ге дейінгі сандар енгізіліп, экранға шығарылатын мысал:

 
#include <stdio.h>
int main(void)
{
int t,i, num[3][4];
/* сандарды енгізу */
for(t=0; t<3; ++t)
for (i=0; i<4; ++i)
num[t][i] = (t*4)+i+1;

/* сандарды шығару */
for (t=0; t<3; ++t)
{
for (i=0; i<4; ++i)
printf("%d  ",num[t][i]);
printf ("\n");
}
return 0;
}

Бұл мысалда num[0][0] элементтің мәні 1-ге тең, num[0][1] элементінің мәні 2-ге тең, num[0][2] - 3 ... num[2][3] мәні 12.

 

2 Тапсырмалар

Тапсырмалар нұсқалары:

1)      B(N,M) (N≤M, M≤13) матрицасы берілген. Матрицаның әр бағытының элементтерінің қосындысын тап. Табылған қосындыдан D массивін құр.

2)      N (N≤15) тұрғындар пункті және қалаларды біріктіретін авиасызықтар желісі бар. Желі M(N,N) байланыс матрицасымен берілген, мұндағы M(i,j) =0 болады, егер i мен j  бір-бірімен байланыссыз болса, кері жағдайда M(i,j)=1. N тұрғындар пункттерінің арасында жекеленген қала  (ұшып бару мүмкін емес) бар ма екенін анықтау керек.

3)      Енгізілген жолдардағы цифрлардың арасында жиі кездесетінін баспаға шығару. Егер мұндай цифрлар бірнешеу болса, бірінші кездескенін баспаға шығару.

4)      Енгізілген жолда кіші әріптерді бас әріптерге қайталап, баспаға шығару.

5)      Келесі түрдегі (10,10) өлшемді квадрат матрицаны қалыптастыру және баспаға шығару:

0   0 0 0...0 1

0   0 0 0...2 0

0   0 0 7...0 0

0   0 8 0...0 0

0   9 0 0...0 0

10 0 0 0...0 0

6)      a және b  (a<b) нақты сандары берілген. Х(10,10) матрицасын [a,b] кесіндісінде біркелкі орналасқан, элементтері нақты кездейсоқ сандар болатындай құру. Матрица жолында ең кіші элементті және оны бірінші жолдың орнымен ауыстыру.

7)      K<20 өлшемді квадрат матрицасы берілген. Бас диагоналға “ортогональды” орналасқан элементтердің қосындысын табыңыз.

8)      [-5,20] диапозонының кездейсоқ саны болып табылатын, А(75) бүтін санды массив элементтерін қалыптастыр: элементтің арасында айырмасы үлкен мәнді болатын екіні тап.

9)      70 студенттің бойларын өлшеу жүргізілді. Мәліметтер ROST массивіне жазылған. NR массивіне бойы 180 см-ден кіші студенттердің санын есептеу керек.

10)  Енгізілген мәтінде «f»-ке аяқталатын сөздің бар болуын және мұндай сөздердің қанша екенін (сөздер бос орынмен бөлінген) анықтау.

11)  Әріптерден ғана тұратын жолды енгізу және әріптер алфавиттегі ретпен орналасқанын анықтау.

12)  Енгізілген мәтінде қанша сөз бір әріппен басталып, сондай әріппен аяқталатынын анықтау. Сөздер бос орынмен бөлінген.

13)  Дүкенде N адамнан тұратын кезек бар. [2.5,10.4] интервалында біркелкі тығыздық заңдылығы бойынша таратылған, i-ші сатып алушыға қызмет көрсету уақыты ti – кездейсоқ шама. С12,…,СN – әр сатып алушының кезекте тұру уақытын алу. Кезекте аз уақыт қызмет көрсетілген адамның нөмірін көрсетіңіз

14)  Берілген бүтін сандық массивте реттелген нөмірі Фибоначчи саны болатын элементтерді шығару, сондай-ақ таңбаларды ауыстыру санын анықтау керек.

15)  Нақты Х(15,20) матрицасы және Y(15) массиві берілген. Матрицаның жұп бағандарын Y векторына ауыстыр.

16)  Енгізілген мәтінде «no» сөзінің қанша рет кездесуін есептеңіз. Сөздер бос орынмен бөлінеді.

17)  [-4.0,8.2] интервалында біркелкі таратылған, элементтері кездейсоқ сан болатын, А(N,M) матрицасын құр.

18)  А(N) массиві берілген. Бір-біріне жақынырақ орналасқан көрші элементтер жұбын табыңыз. Жақындау өлшемі: R= │A[i+1]- A[i]│.

19)  Енгізілген жолдан әріп және цифр болмайтын символдарды өшіре отырып және әр цифрды ‘*’ таңбасына ауыстыра отырып шығар.

20)  Тек 0 мен 1 сандарынан тұратын N (N<50) элементті массивті құрыңыз. 0 мен 1-дің қатаң түрде кезектесіп отыруын тексеріңіз.

 

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

1)  Массив дегеніміз не?

2)  Екі өлшемді массив элементіне қатынас жасау тәсілі.

3)  Екі өлшемді массивті инициализациялау қалай жүзеге асады?

4)  Енгізу-шығару нұсқаулары және массивтерді өңдеу.

5)  Массивтің жадыда алатын көлемі қалай есептеледі?

6)  Екі өлшемді массивті инициялизациялаусыз хабарлау мысалын

келтіріңіз.

7)  Цикл көмегімен массив элементтерін пернетақтадан еңгізуді түсіндіріңіз.

8)  Массив элементтерін экранға шығаруды көрсетіңіз.

 

Зертханалық жұмыс № 6. Жолдар

 

Жұмыс мақсаты: мәтіндерді өңдеу білімдерін тереңдету, өндеу дағдыларын меңгеру

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

Си де жол – бұл элементтері символдардан тұратын массив.

Жолдармен және символдармен орындалатын әрекеттер төменде сипатталған стандартты функциялар көмегімен жүзеге асырылады.

- size_t strlen (const char *s)— s жолының ұзындығын қайтарады (байтпен), '\0' қосылмайды;

- char* strcat (char *dest, const char *src)— src жолын dest.жолының соңына қосады;

- char* strcpy (char *dest, const char *src)— src жолын dest көрсетіп тұрған жадыдағы орынға көшіреді;

- char * strncat (char *dest, const char *src, size_t maxlen)— src жолының maxlen символдарын dest жолының соңына қосады;

- char * strncpy (char *dest, const char *src, size_t maxlen)— src жолының символдарының бірінші maxlen символдарын  dest көрсетіп тұрған жадыдағы орынға көшіреді;

- char* strstr (char *sl, const char *s2)— s2 жолының s1 жолына бірінші рет енуін іздейді;

- int strcmp (const char *sl, const char *s2)— лексикографикалық салыстыру;

- char * stricmp (const char *sl, const char *s2)— strcmp функциясының аналогы, әріптердің регистрін есепке алмайды.

 

Мысалы:

 Пернетақтадан  енгізілген жолды кері тәртіппен шығару программасы. #include <stdio.h>

#include <string.h>

#include <conio.h>

void main(void)

{

   char s[100];   //  символдардан тұратын массивті сипаттау

    int i, k;

      clrscr();

      puts("Жолды енгізіңіз");

       gets(s);

k=strlen(s);

puts(" ...    ПРОГРАММА ЖҰМЫСЫНЫҢ НӘТИЖЕСІ ......\n");

  for (i=k; i>=0; i--)

    printf("%c",s[i]);

    /*  массив элементтерін кері тәртіппен шығару */

      printf("\n Press any key...");

    getch();

  }

2         Тапсырмалар

 

2.1 Тапсырма. Пернетақтадан символдардан тұратын жолды енгізіңіз. жолды енгізудің соңын білдіретін белгі – "enter" батырмасы. Есепті шешу үшін  программа және алгоритмнің блок схемасын құрыңыз.

 

Тапсырмалар нұсқалары:

1)     Программа енгізілген жолдың ұзындығын L деп анықтап, егер L 2-ге бөлшек бөліксіз бөлінсе соңғы сөзді жою керек.

2)     Программа енгізілген жолдың ұзындығын L деп анықтап, егер L 2-ге бөлшек бөліксіз бөлінсе, бірінші екі символды және соңғы екі символды жою керек.

3)     Жолдың S1...Sn символдарының арасында DOS сөзіне енетін символдар бар жоғын анықтаңыз.

4)     Программа енгізілген жолдың ұзындығын L деп анықтап, егер L 2-ге қалдықсыз бөлінсе жолдың ортасында орналасқан символды жою керек.

5)     Программа ұзындығы L енгізілген жолдың әр жұп орында орналасқан символы $ символына ауыстырылсын.

6)     Программа ұзындығы L енгізілген жолдың әр бос орын символы $ символына ауыстырылсын.

7)     Программа енгізілген жолдың ұзындығын анықтасын, егер L>10, онда артық символдар жойылсын.

8)     Программа енгізілген жолдың ұзындығын анықтасын, егер L қалдықсыз 3-ке бөлінсе, онда символ орналасқан орын индексі 3-ке бөлінетін символдар жойылсын.

9)     Программа енгізілген жолдың ұзындығын анықтасын, егер L қалдықсыз 5-ке бөлінсе,  онда барлық бос орын символдар саны анықталуы тиіс.

10) Программа енгізілген жолдың ұзындығын анықтасын, егер L қалдықсыз 4-ке бөлінсе, барлық А әріптері Z әрпіне ауыстырылуы тиіс.

11) Программа енгізілген жолдың ұзындығын анықтасын, егер L=10, онда барлық  A...Z әріптер жойылады.

12) Программа енгізілген жолдың ұзындығын анықтасын, егер L >15, онда барлық  a…z әріптер жойылады.

13) Енгізілген жолдағы индексі жұп орындағы символдар индексі тақ символдарға ауыстырылсын.

14) Программа енгізілген жолдың ұзындығын анықтасын, егер L >6, онда { } жақшадағы символдарды шығару тиіс.

15) Программа енгізілген жолдың ұзындығын анықтасын, егер L>5, онда енгізілген жолға “үтір” cөзі қанша рет енетінін анықтаныз.

 

2.2 Тапсырма. Ұзындығы 1000 символдан аспайтын (мәтіндегі жолдардың ұзындығы 70 символдан аспайтын) тексттік редактор арқылы құрылып, файлда сақталған мәтін берілсін. Файл атының кеңейтпесі DAT болсын. Төмендегі ереже бойынша мәтінді экранға шығаратын программа құрыңыз.

 

Тапсырмалар нұсқалары:

1)      Нақты бір клавишаны басқан сайын мәтіндегі әр сөйлемді ерекшелеп, мәтіндегі сөйлем санын анықтаңыз.

2)      Нақты бір клавишаны басқан сайын мәтіндегі әр сөзді тізбектеп ерекшелеп, мәтіндегі сөз санын анықтаңыз.

3)      Нақты бір клавишаны басқан сайын мәтіндегі әр “a” әрпіне  аяқталатын сөздерді тізбектеп ерекшелеп, ондай сөздердің мәтінде қанша екенін анықтаңыз.

4)      Нақты бір клавишаны басқан сайын мәтіндегі әр “!” белгісімен  аяқталатын сөйлемдерді ерекшелеп, мәтіндегі ондай сөйлемдердің санын анықтайды.

5)      Нақты  бір клавишаны басқан сайын мәтіндегі сөйлемдерді 2,1,3 тізбек тәртібі бойынша ерекшелеп көрсетеді.

6)      Нақты бір клавишаны басқан сайын мәтіндегі әр бірінші және соңғы элементтері тең сөздердің тізбектеп ерекшелеп көрсетіңіз.

7)      Нақты бір клавишаны басқан сайын “A” әрпінен басталатын сөздерді тізбектеп ерекшелеп көрсетіңіз.

8)      Нақты бір клавишаны басқан сайын “A” әрпі бар сөздерді тізбектеп ерекшелеп көрсетіңіз.

9)      Нақты бір клавишаны басқанда символдар саны максималды сөзді ерекшелеп көрсетіңіз.

10)  Нақты бір клавишаны басқанда символдар саны минималды сөзді ерекшелеп көрсетіңіз.

11)   Нақты бір клавишаны басқанда символдар саны жұп сөздерді ерекшелеп көрсетіңіз.

12)  Нақты бір клавишаны басқанда сөздер саны жұп сөйлемдерді ерекшелеп көрсетіңіз.

13)  Нақты бір клавишаны басқанда клавиатурадан енгізілген сөзді мәтінде ерекшелеп көрсетіңіз.

14)  Енгізілген мәтінді экранға қайта шығару алдында әр сөйлемнің соңына  берілген мәліметімен бірге енгізілген сөзді қосып жазып шығаратын программа жазыңыз.

15)  Енгізілген мәтіндегі әр сөйлемді жаңа жолдан, сөздер арасындағы артық бос орындарды алып тастап экранға шығаратын программаны жазыңыз.

16)  Енгізілген мәтіндегі қатар бір- бірінен соң орналасқан бос орындар тізбектері арасынан ең ұзын тізбекті анықтайтын программа жазыңыз.

 

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

1)      float x[15] [15] массивін 0-1 диапазонынан кездейсоқ сандармен толтыру қалай орындалады? 

2)      10 бүтін саннан тұратын А массивінің сипаттамасын келтірініз.

3)      Қай жағдайда массив өлшемін көрсетпеуге болады?

4)      int m[6]={5, 3, 2}; массиві хабарласын. m[4] элементі неге тең?

5)      Индекстің төмеңгі индексі неге тең?

6)      нөль - терминатор деген не?

7)      Жолдар қандай типті айнымалылар арқылы инициализацияланады?

8)      Жол элементіне қалай қол жеткізуге болады?

Зертханалық жұмыс № 7. Функциялар

 

Жұмыс мақсаты: функцияларды пайдалану арқылы программалау дағдысын меңгеру.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

1.1 Функциялар

 

Мысал: N саны берілсін. 1-ден N-ге дейінгі жікті сандардың барлығының бөлгіштерінің қосындысын табу қажет (өзінен және 1-ден басқа)

#include <stdio.h>

#include <iostream.h>

int sum(int);                       //функция прототипі

int delitel(int,int);             // функция прототипі

void main()

{ int n,s=0;

сin >> n;

for (int i=1;i<=n;i++)

s+=sum(i);

cout << s;

}

int sum(int x)             // функция сипаттамасы

{int s=0;

for (int i=2;i<x;i++)

if (delitel(x,i)) s+=i;

return s;

}

int delitel(int n,int i)   //функция сипаттамасы

{ int t=0;

do

{ t+=i;

}

while (t<n);

if (t==n) return 1; else return 0;

}

 

2 Тапсырмалар

 

Тапсырмалар нұсқалары:

1)  функцияның мәнін есептейтін программа жазыңыз, мұнда А(10), В(10) берілген файлда сақталған бір өлшемді массивтер.

2)  функцияның мәнін есептейтін программа жазыңыз, мұнда А(10), В(10) берілген файлда сақталған бір өлшемді массивтер.

3)  функцияның мәнін есептейтін программа жазыңыз, мұнда А(10), В(10) берілген файлда сақталған бір өлшемді массивтер.

4)  функцияның мәнін есептейтін программа жазыңыз, мұнда А(10), В(10) берілген файлда сақталған бір өлшемді массивтер.

5)  функцияның мәнін есептейтін программа жазыңыз, мұнда А(10), В(10) берілген файлда сақталған бір өлшемді массивтер.

6)   функцияның мәнін есептеп, файлға сақтайтын программа жазыңыз, Мұнда m,n- бүтін сандар.

7)   функцияның мәнін есептейтін программа жазыңыз, мұнда . C(i), D(i) берілген файлда сақталған массивтер. Х клавиатурадан енгізілетін мән.

8)   функцияның мәнін есептейтін программа жазыңыз, мұнда . C(i), D(i) берілген файлда сақталған массивтер. Х клавиатурадан енгізілетін мән.

9)  функцияның мәнін есептейтін программа жазыңыз, мұнда және  Х(10) және Y(15) массивтерінің максималды элементтері. Х(10),Y(15) массивтері файлда сақталған.

10)    функцияның мәнін есептейтін программа жазыңыз, мұнда  ,  ал  Т(15) және Q(15) берілген файлда сақталған массивтер.

11)   функцияның мәнін есептейтін программа жазыңыз, мұнда және  Х(12) және Y(10) массивтерінің минималды элементтері. Х(10) және Y(15) файлдан оқылсын.

12)    функцияның мәнін есептеп, файлға сақтайтын программа жазыңыз, мұнда және .

13)   A(3,3), B(4,4),C(3,3) массивтері берілсін, файлда сақталады. X,Y,Z сандарының минималдысын табу қажет. Мұнда X,Y,Z  сәйкес А,В,С массивінің бас диагонал элементтерінің қосындысы.

14)   A(3,3), B(4,4),C(3,3) массивтері берілсін, файлда сақталады. X,Y,Z сандарының минималдысын табу қажет. Мұнда X,Y,Z  сәйкес А,В,С массивінің максималды элементтері.

15)   В(3,5) және С(3,4) массивтері берілсін, файлда сақталады. Оң сандарының көбейтіндісін, теріс сандарының қосындысын есептейтін программа жазыңыз.

16)   А(3,3), С(7,7) массивтері берілсін, файлдан оқылады. Нөлге тең және теріс элементтерінің санын шығаратын программа жазыңыз.

17)   А(12) В(10) массивтері берілсін, файлдан оқылады. Мәні [-3,5] интервалына түсетін элементтерін А1, В1 массивтеріне табылған тәртібімен сақтайтын программа жазыңыз.

18)  А(4,3), С(5,7) массивтері берілсін, файлдан оқылады. 3-ке қалдықсыз бөлінетін элементтерінің қосындысын есептейтін программа жазыңыз.

19)  A(4,4), B(4,4),C(4,4) үш массиві берілсін, файлдан оқылады. Мәні 1-ден аспайтын элементтерін D массиві жазып шығаратын программа жазыңыз.

20)  A(3,4), B(2,4),C(4,4) үш массиві берілсін, файлдан оқылады. Мәні 2-ге қалдықсыз бөлінбейтін элементтерін D массиві жазып шығаратын программа жазыңыз.

21)  A(2,2), B(3,3),C(4,4) үш массиві берілсін, файлдан оқылады. Әр массив үшін элементтерінің қосындысын D массивіне жазып шығаратын программа жазыңыз.

22)   функциясының мәнін есептейтін программа жазыңыз. Мұнда  Х(10) және Y(15) массивтерінің минималды элементтері. Х(10) және Y(15) файлда сақталған болсын.

23)   B(5,3) және C(4,3) массивтері үшін мәні теріс сан элементтерінін қосындысын, мәні оң сандар элементтерінің санын шығаратын программа жазыңыз. В және С массивтері файлда сақталған болсын.

24)   B(3,3) және C(4,4) массивтері үшін мәні 5-ке қалдықсыз бөлінетін элементтерін А массивіне көшіріп жазатын программа жазыңыз. В және С массивтері файлдан оқылатын болсын.

25)   A(4,4) және B(5,5) массивтері үшін бас диагоналдарында орналасқан элементтердің арифметикалық ортасын есептейтін программа жазыңыз. А және В массивтері файлдан оқылатын болсын.

26)   Алгебралық қосындысын есептеу

27)  . Программа орындалу барысында N-ды файлдан оқитын болсын, k клавиатурадан енгізілсін.

28)   N*N матрицасы файлда сақталған болсын. Матрицаның анықтауышын есептейтін программаны жазыңыз.

29)  Үшбұрыштың ауданын есептейтін программаны жазыңыз. a,b,c сандардың мәндерін файлдан оқитын болсын.

30)    өрнек мәнін есептейтін программа жазыңыз. Мұнда a,b,c бүтін сандарды файлдан оқитын болсын.

31)  өрнегінің мәнін есептейтін программа жазыңыз, егер . Мұнда s,t мәндерін файлдан оқитын болсын.

32)  Жолды “аударатын” және оған параметр ретінде бере отырып, функцияны тестілеу және жазу керек.

33)  Бүтін сандық матрицасында ең кіші элементтер санын есептейтін, функцияны тестілеу және жазу керек.

34)  Екі квадрат матрица берілген. Ең кіші “ізі” бар (яғни бас диагонал элементтерінің қосындысын) матрицаны басып шығару. Функцияны матрицаның ізі мен матрицаны баспаға шығару үшін қолдану керек.

35)  Берілген жолда көрсетілген символдың қанша рет кездесуін есептейтін функцияны жазу және тестілеу.

36)  Массивте элементтің модулі бойынша ең кішісін табатын және оларды барлық элементтермен ауыстыратын, функцияны жазу және тестілеу.

37)  Тікбұрышты матрицада j-ші жолдың элементтерінің қосындысын табатын, функцияны жазу және тестілеу.

38)  str-ге кіретін, тек цифрлардан тұратын, берілген str жолы бойынша жаңа жолды қалыптастыратын, функцияны жазу және тестілеу.

39)  A, B, C және D кесінділер ұзындығы берілген. Үшбұрыш тұрғызуға болатындай, осы үшбұрыштың ауданын шығару (үшбұрыштың ауданын табу және баспаға шығару үшін, функцияны анықтау, егер ол бар болса).

40)  Квадрат матрицаның бас диагоналының элементтерін кері ретпен орналастыратын функцияны жазу және тестілеу.

41)  Нақты матрицаны қосу және алу амалдарын орындау үшін, функцияны жазу және тестілеу. Формальды параметрлердің біреуі операция түрінің белгісі болуы керек.

42)  Жолда, оған параметр ретінде берілетін, әр екінші элементі берілген символға ауыстыратын, функцияны жазу және тестілеу.

43)  Тікбұрышты матрицада элементтердің ең үлкен қосындысы бар жолдың нөмірін табу үшін, функцияны жазу және тестілеу.

44)  Берілген жолда, көрсетілген позициядан бастап “:” символын “.” символына ауыстыратын функцияны жазу және тестілеу.

45)  [n ,m] интервалында қанша жай сандар бар екенін анықтау және оларды баспаға шығару. Кезекті сан жай сан болатынын анықтау үшін функцияны құрыңыз.

46)  Берілген жолға әр әріптің екі реттен артық кірмейтінін анықтайтын, функцияны жазу және тестілеу.

47)  Матрицаны транспонирлеу функциясын жазу және тестілеу.

48)  Үшбұрыштың A,B,C қабырғаларының ұзындығы берілген. Оның медианасын табу. А қабырғасына жүргізілген медиана ұзындығы, келесі формула бойынша есептеледі: (функцияны медиананың ұзындығын табу үшін қолдану).

49)  Тікбұрышты матрицада жолдарды кері ретпен орналастыратын функцияны жазу және тестілеу.

50)  Полярлы координаттар нүктесін, оның тікбұрышты декартты координаттар бойынша, анықтау үшін функцияны жазу немесе тестілеу. Полярлы және декартты координаттардың тәуелділігі:

51)  ; .

52)  Функцияның  мәнін есептеу үшін жазу. Оның көмегімен 12-ден 24-ке дейін 4 қадаммен n үшін S(n) мәнін есептеу керек.

 

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

1)      Программа объектісі тұрғысынан функцияның аты нені білдіреді?

2)      Функцияға мәліметтерді беру тәсілдері қандай?

3)      Функция жұмысының нәтижесін қалай қайтаруға болады?

4)      Мән қайтармайтын функцияның типі қандай болуы қажет?

5)      Функцияның аргументтері деп нені атайды?

6)      Жазылған функция жұмысының дұрыстығын қалай тексеруге болады?

7)      Функция аргументтері тізімінен кейін не жазылады?

8)      Функцияларды программа кодында неге пайдаланады?

 

Зертханалық жұмыс № 8. Файлдан енгізу/шығару

 

Жұмыс мақсаты: файлға мәліметтерді жазуды, файлдан мәліметтерді оқуды үйрену.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

1.1  Файлдан енгізу/шығару

 

Файлдармен жұмыс жасау келесі қадамдардан тұрады:

1)     Файлдық айнымалыны құру.

2)     Файлды ашу.

3)     Оқу/жазу операцияларын орындау.

4)     Файлды жабу.

 

Файлдық айнымалы

Файлдық айнымалыны құру үшін арнаулы FILE типі бар, файлдық айнымалыны хабарлау:

FILE  *айнымалының аты.

 

Файлды ашу

Файлды ашу үшін fopen функциясы бар. Жұмыс жасағанда бұл функция файлдың атын және қол жеткізу тәсілін сұрайды:

Қол жеткізу тәсілі дегеніміз бұл файлмен не істеуге болатынына нұсқау. Екі тәсілді қарастырайық:

r- оқуға мүмкіндік; w – – жазуға мүмкіндік.

 

Файлдармен жұмыс жасау

С++те файлды оқу немесе оған жазу операциялары үшін fprintf және fscanf функциялары қолданылады. Олардың scanf және printf функцияларының айырмашылығы файлдық айнымалыны көрсетуді талап етуінде.

 

Файлды жабу

Файлды жабу үшін fclose (файлдық айнымалы) функциясы қолданылады.

#include <stdio.h>

void main()

{ FILE *h; // файлдық айнымалы хабарланды

 h=fopen("file.dat", "w"); //файл жазу үшін ашылды

 for (int i=1;i<=100;i++) fprintf(h,"%d\n",i); // бірінші жүз бүтін сан

 fclose(h);  //файл жабылды

 h=fopen("file.dat", "r"); //файл оқу үшін ашылды

 int a;

 for (i=1;i<=100;i++)

 {fscanf(h,"%d\n",&a); //бірінші жүз бүтін сан сан оқылады

 printf("%d\n",a); //сандар экранға шығарылады.

}

}

FSEEK(файлдық айнымалы, позиция, есептеп бастау нүктесі)

Позицияесептеп бастау нүктесінен есептелінетін байт саны.

Есептеп бастау нүктесіпозиция есептелінетін нүкте.

Оны көрсету тәсілдері:

-     SEEK_SET файлдың басынан;

-     SEEK_CUR ағымдағы позициядан;

-     SEEK_END файлдың аяғынан.

Кез келген файл биттер бойынша тізбек ретінде қарастырылады:

0 байт

1 байт

...

 

 

 

 

 

EOF

 

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

 

#include <stdio.h>

void main()

{ FILE *h;

 h=fopen("file.dat", "wr");

 for (int i=1;i<=100;i++) fprintf(h,"%d\n",i);

 fseek(h,0,SEEK_SET);

 int a;

 for (i=1;i<=100;i++)

{fscanf(h,"%d\n",&a);

printf("%d\n",a);

}

}

 

2     Тапсырмалар

 

Тапсырмалар нұсқалары:

1)  Кездейсоқ сандар датчигі көмегімен файлға бүтін сандарды жазатын программаны құрыңыз.

2)  Файлда жазылған мәтіннен барлық “А” әріптерін жоятын программа жазыңыз.

3)  Файлда сақталған бүтін сандардың ішінен максималды санды табатын программаны жазыңыз.

4)  Файлда сақталған бүтін сандардың ішінен минималды санды табатын программаны жазыңыз.

5)  Файлда сақталған мәтінде артық “бос орын” символдарын жоятын программаны құрыңыз.

6)  Файлда сақталған мәтінде “Б” әрпі қанша рет кездесетінін анықтайтын программаны құрыңыз.

7)  Файлда сақталған бүтін сандардың қосындысын есептеп экранға шығаратын программаны құрыңыз.

8)  Файлда сақталған мәтінде “!” белгісі бар жоғын анықтайтын программаны құрыңыз.

9)  Пернетақтадан енгізген символдарды файлға сақтайтын программаны құрыңыз.

10)  Файлда сақталған сандардың көбейтіндісін екінші файлға сақтап қоятын программаны құрыңыз.

11)  Файлда сақталған сандардың квадратын екінші файлға жазып сақтайтын программа құрыңыз.

12)  Файлда сақталған мәтінде қанша сөйлем барын анықтайтын программа құрыңыз.

13)  Файлда сақталған мәтінде қанша сөз барын анықтайтын программа құрыңыз.

14)  Файлда сақталған мәтіннің бірінші және соңғы әріптерінің орнын ауыстырып қайта файлға жазып қоятын программаны құрыңыз.

15)  Квадрат теңдеуінің а,в,с параметрлерін файлдан алып теңдеудің шешімін табатын программаны құрыңыз.

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

1)   Файл түсінігі.

2)   Ағын түсінігі.

3)   Файлдармен жұмыс жасау үшін тақырыпша файл.

4)   Ағынды хабарлау.

5)   Файлды ашу командасы.

6)   Файлды жабу командасы.

7)   Файлдық айнымалы түсінігі.

8)   Оқу/жазу операциялары қалай орындалады?

 

Зертханалық жұмыс № 9. Құрылымдар

 

Жұмыстың мақсаты: құрылымдарды анықтауда және қолданудағы дағдыларды іске асыра білу.

 

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

-      құрылым – бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атаумен топтастырылған бір немесе бірнеше айнымалылар (әртүрлі типті болуы мүмкін);

-      құрылымдар көшіріледі, олармен меншіктеу операциясы орындалады;

-      құрылымдарды аргументтер ретінде функцияға беруге болады, ал функция оларды нәтиже ретінде қайтарады;

-      құрылым айнымалысы оған кіретін айнымалы типінің құрылымы бола алмайды. Бірақта ол құрылым типіне көрсеткіш ретінде, осы айнымалы кіретіндей жарияланады. Бұл құрылымның байланыс тізімдерін құруға мүмкіндік береді.

 

Мысалы:

А-есебі. Комплекстік сан  түсінігін сипаттайтын құрылымды анықтау. Комплекстік санды енгізу-шығару үшін, сондай-ақ алгебралық түрде берілген екі комплекстік санды қосу үшін функцияны жазу және тестілеу.

    #include<stdio.h>

    typedef struct

    { int real;

       int imag;

    } Complex;

void main ( )

{ Complex c1, c2, c3, read ( );

void add (Complex, Complex, Complex *), print (Complex);

c1=read ( ); c2 = read ( );

    add (c1, c2, & c3);

printf (“Қосуда”);

print (c1); printf (“n ); print (c2);

printf(“\ n алынды “); print (c3);

}

 Complex read( )

    { complex c;

              puts (“санның нақты және жорамал бөлігі: “);

               scanf (“%d%d”, & (c.real), ( c.imag));

    return c;

 }          

    void print (Complex c)

    { printf (“ %d+i*(%d)”, c.real, c.imag);}

void add (Complex c1, Complex c2, Complex * c3)

{  c3 -> real=c1.real + c2.real;     

    c3 -> imag=c1.imag + c2.imag;

}

 

В-есебі. Енгізілген жыл, ай және күн бойынша жылдағы реттелген күн нөмерін анықтау.

typedef struct

{  int year;

    int month;

    int day;

}  DATE;

int tab_days [2] [13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}};

int day_of_year (DATE d)

{  int i, k;

k = d.year %4= =0 && d.year % 100!=0 ¦¦           //толық жыл ма

      d. year %400= =0;                 

if (d.month<1 ¦¦  d.month>12) return –1;

if (d.day<1 ¦¦  d.day >tab_days[k] [d.month]) return – 1;

for ( i=1; i<d.month; i+ +)

d.day + =tab_days[k] [i];

return d.day;

}

#include <stdio.h>

void main ( )

{ DATE d;

int N;

puts (“ Күн, ай және жыл нөмерін енгізіңіз.”);

scanf (“ % d%d%d”, &d.day, &d.month, &d.year);

N = day_of_year (d);

if (N<0) puts (“ Күні дұрыс енгізілмеген!”);

else printf (“ осы күннің %d жылдың %d\n номері бар”, d.year, N);

}

2 Тапсырмалар

 

Тапсырмалар нұсқалары:

1)  Уақыт  айнымалысын (сағат, минут, секунд) құрылым ретінде  сипаттау. Функцияны құру және тестілеу:

a)   t1 уақыт параметрін d  секунд параметріне меншіктейтін, t уақытында қарағанда КЕЛЕСІ_СЕК (t, t1, d ) үлкен (тәуліктің ауысуы мүмкін);

б) ара-қашықтық (t1, t2, d) t1 уақыттан t2 уақытқа өткен d уақытын есептейді.

2)  Рационал сан түсінігін сипаттайтын құрылымды енгізу  (жұп және тақ өрістермен) функцияны құру және тестілеу:

a)   ТЕҢ (А, В), А және В рационалды сандардың бір-біріне тең екенін тексереді;

б) МАКС (X, N) рационал сандардың X[N] массивінен ең үлкен санын қайтаратын.

3)  Келесі өрістер бар құрылымды енгізу: фамилия, қала, адрес, тұрғын деген ұғымын мазмұндау үшін ТАҒДЫР-ТӘЛКЕГІ  (С)  функцияны құрастыру және тестілеу. Бұл функция С тізіміне әр түрлі бір адресі бойынша екі (кез келген) тұрғынның фамилияларын басып шығарады.

4)  Дата деген ұғымды мазмұндау үшін (күн, ай, жыл өрістер бар) құрылымды енгізу. Келесі шарттар бойынша функцияны құру және тестілеу:

a)   екі датаның өткен аралығын (күндер) есептейді;

б) жыл күннің реттік нөмірі бойынша осы күнге сәйкес келетін айы мен күнін анықтау;

в) N күн бұрын енгізілген дата бойынша датаны басып шығарамыз;

5)  Үш өлшемді кеңістікте шар мен нүктені мазмұндайтын құрылымды анықтау. Нүкте берілген шардың ішіне кіретінін тексеріп функцияны құру және тестілеу.

6)  Рационалды сан  түсінігін сипаттайтын құрылымды (жұп және тақ өрістер) енгізу. Функцияны құру және тестілеу:

a)   ҚОСУ (А,В,С) А және В рационал сандар қосындысының нәтижесін С-ке жазады;

б) МИН (А,В) Ажәне В рационал сандарының ішіндегі кішісін қайтарады;

в) КӨБ (А,В,С) А және В  рационал сандарды көбейту нәтижесін С-ке жазады.

7) Комплекс санды сипаттайтын құрылымды енгізу. Келесі шарттар бойынша функцияны құру және тестілеу:

а) алгебралық формадан комплекс санды көрсеткіштік формаға түрлендіру;

б) көрсеткіштік формадан комплекс санды алгебралық формаға түрлендіру;

в) түйіндес комплекс санды алу.

8) Алгебралық полином түсінігін сипаттайтын құрылымды енгізу. Келесі үшін функцияны құру және тестілеу:

а) полиномды енгізу;

б) полиномды шығару;

в) полиномды қалыптастыру. 

9) Комплекс санды сипаттау үшін құрылымды енгізу. Келесілер үшін функцияны құру және тестілеу:

a)    Комплекс санды бүтін оң дәрежеге шығару;

б) алгебралық формада комплекс санды көбейту;

в) көрсеткіштік формада комплекс санды көбейту.

10) Алгебралық полином түсінігін сипаттайтын құрылымды енгізу. Келесілер үшін функцияны құру және тестілеу:

  а) полиномдарды қосу;

  б) полиномдарды алу;

  в) полиномдарды көбейту.

11) Автомобиль түсінігін сипаттайтын тіркеу күні, автомашина маркасы, шыққан жылы, түсі, нөмер өрістерімен берілген құрылымды енгізу. Функцияны жазу және тестілеу:

a)   жаңа машинаны тіркеу;

б) машинаны тіркелген тізімнен жою;

в) кез-келген белгілер комбинациясы бойынша машиналарды іздеу.

12) Құрылым массиві топтағы студенттер туралы ақпараттан тұрады: бірінші өрісте фамилиясы, екіншіде-жасы, үшіншіде-бойы, төртіншіде-сессиядағы орташа балы және т.б. тұрады (массивтің і-ші элементі і-ші студентті сипаттайды).

Студент k параметрі бойынша орташа статистикалық деп аталады, егер онда k-ші бағанның орташа арифметикалық санның айырмасының  кіші модулі және оны студенттің k-ші мәні жететін болса. Сол сияқты k-ші параметр бойынша жалғыз студенттер анықталады (онда максимумға жетеді)

Студент ең ортасы деп аталады, егер ол параметрлердің ең үлкен саны бойынша орташа статистикалық болып табылды. Сол сияқты ең жалғыз студент анықталады.

Топта қай студент қандай екенін анықтау:

a)    ең ортасы;

б) ең жалғызы;

в) ең жалғызының арасындағы ең ортасы;

г) ең ортасының арасындағы ең жалғызы.

13) Үй N  қабат пен үш лифтен тұрады. Әр лифт бос немесе бос емес болуы мүмкін. Адам қабаттың біреуінде тұр және сол адам тұрған қабатқа қарай бағытталған жақын бос емес лифті шақырайын деп тұр.

Бастапқы конфигурацияның  (адамның орнын, лифтің қозғалысының бағыты және жұмыс істеу, кідірісі), сондай-ақ шақырылатын лифтің нөмірін басып шығару. ЕНГІЗУ, ШЫҒАРУ, ЛИФТІ ТАҢДАУ функцияларын қолдану.

14) Катеттерімен, координаттар өсіне параллель және төменгі солжақ тік бұрышпен берілген, теңбүйірлі тікбұрышты ұшбұрышты сипаттайтын құрылымды анықтау.

Екі берілгендердің қиылысу аймағы-жаңа үшбұрышқа көрсеткішті қайтаратын, функцияны жазу және тестілеу. Егер қиылысу болмаса NULL қайтарылады.

15) Полярлы және декарт координаттар жүйесіндегі нүктені  сипаттайтын құрылымды анықтау. Келесілер үшін функцияны құру және тестілеу:

а) декарттық координаттар нүктесін алу, егер олар полярлы координаттарда берілсе;

б) декарттық координаттар жүйесінде берілген екі нүктелердің арақашықтығын есептеу.

16) Маңызды тарихи күндер-құрылымын анықтау. Оның өрісі  -  жыл, оқиға. Функцияны жазу және тестілеу:

-      өрістердің кез-келгені бойынша құрылымды сұрыптаушы;

-      күндердің арасындағы орташа интервалды есептейтін;

-      оқиға аттарында бірінші жиі кездесетін әріпті анықтайтын.

17)  Координаттар өсіне параллель, қабырғаларымен берілген тік бұрышты сипаттайтын құрылымды анықтау (тікбұрыш – сол жақ төменгі және оң жақ жоғарғы екі нүктесімен берілген).

Екі тік бұрыштардың қиылысу аймағына, жаңа тікбұрышқа көрсеткішті қайтаратын, функцияны жазу және тестілеу. Егер қиылысу болмаса NULL қайтарылады.

18) Полярлы және декарт координаттар жүйесіндегі нүктені  сипаттайтын құрылымды анықтау. Келесілер үшін функцияны құру және тестілеу:

а) полярлы координаттар нүктесін алу, егер олар декарт координаттарда берілсе;

б) полярлы координаттар жүйесінде берілген екі нүктелердің арақашықтығын есептеу.

19)  Комплекс санды сипаттайтын құрылымды шығару. Келесілер:

а) көрсеткіштік формада комплекс сандарды бөлу;

б) алгебралық формада комплекстік сандарды жаз.

20) Алгебралық полином түсінігін сипаттайтын құрылымды шығару. Келесі үшін функцияны құру және тестілеу:

а) полиномдарды бөлу;

б) полиномды дифференциалдау;

в) полиномды интегралдау.

 

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

1)  Құрылымды анықтау қандай кілттік сөзден басталады?

2)  Құрылымдық типті айнымалы қалай хабарланады?

3)  Құрылым дегеніміз не? Құрылым типі?

4)  Құрылымның өрісіне қол жеткізу қай операция көмегімен жүзеге асырылады?

5)  Құрылымдармен қандай операциялар орындалады?

6)  Құрылымды функцияға қандай түрде береміз?

7)  Құрылым айнымалысы құрылым типінен болуы мүмкін бе?

8)  Байланысқан құрылымдарды қалай құруға болады?

 

Зертханалық жұмыс № 10. Мәліметтерді іздеу және сұрыптау

 

Жұмыс мақсаты: элементтердің реттелген жиынының концепциясы біздің өміріміздің көп жақтарына тікелей әсер ететін концепциялардың бірі болып табылады.

Жалпы сұрыптауды кейбір анықталған тәртіпте берілген объектілер жиынын қайта топтау процессі ретінде қарастыруға болады. Сұрыптаудың мақсаты – элементтерді осындай реттелген жиында іздеуді жеңілдету.

1 зертханалық жұмысты орындауға әдістемелік нұсқаулар

 

Жазбалар деп аталатын R1, R2, …, Rn, n элементерді реттеу керек делік. Әр Ri жазбасының сұрыптау процессін басқаратын өзінің Ki, кілті (өрісі) бар. Кілтен басқа, жазба сұрыптауға әсер ететін, бірақта әрқашан осы жазбада қалатын, қосымша “жалғаспалы ақпараттардан” (қосымша өрістер) тұрады.

Сұрыптаудың мақсаты – кілт кему ретімен орналасатындай, p(1) p(2) … p(n) жазбалардың алмастыруларын табу

- сұрыптауда а жазбаның өзі ауыстырылады, немесе алмастыруды сипаттайтын және олардың кілттер ретіне сәйкес жазбаларға қатынасуды қамтамасыз ететін, қосымша кесте құрылады;

- алгоритм кілттерді сұрыптайды, бірақ әр кілтпен бірге, олармен байланысты қосымша мәліметтер (өзгеріссіз) ауыстырылады. Егер мұндай мәліметтер көп болса, дұрысы мәліметтердің өзін емес, олардың көрсеткішін ғана ауыстыру;

- сұрыптау әдісіне қойылатын негізгі талаптар – жады мен процессорды қолдану уақытын үнемдеу. Жақсы алгоритмдер жазбаларды сұрыптауға n log n реттелген уақыт кетіреді;

- іздеу алгоритмі, сондай-ақ сұрыптау алгоритмі жүйелілік сияқты, сондай-ақ қолданбалы есеп сияқты мәліметтерді өңдеудің негізгі алгоритмдері болып табылады.

К іздеуінің аргументі берілген іздеу есебі K өзіндік кілті бар жазбаларды іздеуден тұрады. Іздеуді аяқтаудың екі мүмкіндігі бар: іздеу сәтті болды, яғни K кілттен тұратын жазбаның тұрған орны анықталады, немесе ол сәтсіз өтті, яғни жазбаның бірде-біреуі K кілттен тұрмайды;

-      іздеудің негізгі алгоритмдері: тізбектелген (сызықты) іздеу, бинарлы (екілік) іздеу, интерполяциялық іздеу;

-      сұрыптаудың негізгі алгоритмдері: сызықты таңдау (“шыны сауыт (пузырек)” әдісі), қайықты сұрыптау, шелл сұрыптауы, сызықты (қарапайым) қою, орталықтандырылған және екілік қою.

 

Мысалы:

А-есебі. Бүтін санды массивті стандартты айырбас әдісімен сұрыптау функциясын жазу және тестілеу.

1000, 5000 және 10000 көлемдегі массив элементтерін сұрыптау уақытын анықтау. Сұрыптауға бақылау жасау үшін, алдымен алғашқы және сұрыпталған массивтердің басынан, ортасынан және соңынан 10 элементті алып ұйымдастыру.

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

          // st_obmen() – функциясы - «шыны сауытымен»

void st_obmen (int*a, int n)

 {  int i, pp, buf;

     do

           {  n --;

             for (pp=i=0; i<n; i++)

             if (a[i]>a[i+1])

                {  buf = a[i]; a[i]=a[i+1];

                    a[i+1]=buf;

                                    pp=1;

                                 }

                          }

                  while (pp);

              }

// print10 () функциясы – массивтің 10 бірінші, орта және соңғы элементтерін басып шығару

void print10(char*str, int*a, int n)

 { int i, j, in;

    printf (“\n\t\t\t % s\n”, str);

    for (j=0; j<3; j++, printf (“\n”))

      { switch (j)

           { case 0:in=0;printf (“ басы: “); break;

              case 1:in=n/2-5;printf (“ортасы:”); break;

           case 2:in=n-10;printf (“ соңы: ”);

          } 

         for (i=in; i<in+10; i++)

         printf (“%6d” a[i]);

       }

 }

         

void main ()

 { int i, j, x[10000], n[3]={1000, 5000, 10000};             

time_t t1, t2, t;                   // time_t – уақытты көрсететін арифметикалық тип

   double dt[3];

         clrscr ();

                srand (2213);

      for (j=0; j<3; j++)    

                      {  for (i=0; i<n[j]; i++)

                             *(x+i)=rand () % n[j];

            if (!j) print10 (“Алғашқы массив (1000 эл.)”, x, n[j]);

          t1=time(&t);

          st_obmen (x, n[j]);

          t2=time (&t);

          dt[j]=difftime (t2,t1);

          if(!j) print10 (“Сұрыпталған массив”, x, n[j]);

           }                                

                   printf (“ \n\n\t Сұрыптау уақыты – “);

        for (j=0; j<3; j++)

                     printf (“ \n%5d элементтер ->%4.11 f сек.”, n[j], dt[j]);

  }

В-есебі. Бүтін санды массивте бинарлы іздеу әдісімен кілтті іздеу функцияларын жазу және тестілеу.

Тест: n көлемдегі бүтін санды массивте m кілтті іздеу.

Массив элементтері - (0, n+m-1) интервалдан кездейсоқ сандар.

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#include<alloc.h>

// функция bin_poisk() – функциясы – бүтін санды массивте бинарлы іздеу

int bin_poisk (int*a, int n, int v)

 {   int t=0, k=n-1, m;

       while (t<=k)  

           {   m=(t+k)/2;

             if (v<a[m]) k=m-1;

                else if (v>a[m]) t=m+1;

                        else return m;                              //  кілт табылды!

           }

                return –1;                                            //   кілт табылмады …

   } 

// st_obmen ()функция – «шыны сауытымен» сұрыптау

    void st_obmen (int*a, int n)

  {     int i, pp, buf;

         do

                {   n--;

                   for (pp=i=0; i<n; i++)

                    if (a[i]>a[i+1])

                        { buf = a[i]; a[i]=a[i+1]; a[i+1]=buf;

                           pp=1;

                       }

                }

           while (pp);

     }

 

           void main ()

           {   int i, n, m, *a, k, pk;

                srand (2213);

              m1: clrscr () ;

                 printf (“массив өлшемін енгізіңіз:”);

                 scanf (“%d”, &n);

                 a=(int*) malloc (n*sizeof (int));

                 printf (“Ізделінетін кілттердің санын енгіз: “);

                 scanf (“%d”, &m);

                 for (i=0; i<n; i++)

                          *(a+i)=rand ()% n;

                  st_obmen (a, n);

                printf (“\n\ t Аргумент\ t Позиция”);

                    for (i=0; i<m; i++)

                         {    k=rand () % (n+m);

                          pk=bin_poisk (a, n, k);

                          printf (“\n\ t % 6d”, k);

                         if (pk= =-1) printf (“\t\t табылмады”);

                            else printf (“\t\t % 5d”, pk);

                        }

                    printf (“ \n\n Жалғастырамыз ба? Иә – енгіз 7: ”);

                    scanf (“ % d”, &i );

                    if (i= =7) goto m1;

              }

 

2  Тапсырмалар

 

Тапсырмалар нұсқалары:

1) Сұрыптау әдістерін қоюмен, тиімділігіне салыстырмалы талдау жүргізу:

a)       сызықтық және екілік;

b)      екілік және орталықтандырылған.

Ұсынылған тесті: (0, n-1) интервалында таратылған, элементтері кездейсоқ шама болатын, n өлшемді бүтін санды массивті сұрыптау.

2) Іздеу әдісінің нәтижелірін зерттеу:

c)       тізбектелген және бинарлы;

d)      бинарлы және интерполяциалы.

Ұсынылған тест: n ұзындықты бүтін санды массивте m элементтерді іздеу.

Массив элементтері - (0, n-1) интервалында таралған кездейсоқ шамалар. Іздеу кілттері- (0,n+m-1) интервалында таралған кездейсоқ шамалар.    

3) Келесі сұрыптау әдісінің тиімділігіне салыстырмалы талдау жүргізу:

e)       айырбаспен сызықты талдау және қайықты сұрыптау;

f)        қайықты сұрыптау және орталықтандырылып қою;

g)      -5- және екілік қою;

h)      Шелл сұрыптауы және орталықтандырып қою;

i)        стандартты айырбас және тез сұрыптау;

j)        тез сұрыптау және сызықты қою.

Ұсынылған тест: (0, n-1) интервалында таралған, элементтері кездейсоқ шама болатын, n өлшемді бүтін санды массивті сұрыптау.

4) Бүтін санды массивтерді сұрыптаудың функциясын жазу және тестілеу және оларда келесі әдістермен кілттерді іздеу:

k)  Қайықты сұрыптау және бинарлы іздеу;

l)    Шелл сұрыптауы және бинарлы іздеу (рекурсивті функция);

m)Тез сұрыптау және бинарлы іздеу;

n)  Орталықтандырып қою және интерполяциалы іздеу.

Сұрыптау тесті: (0, n-1) интервалында таралған, элементтері кездейсоқ шама болатын, n өлшемді бүтін санды массивті сұрыптау.           

Іздеу тесті: сұрыпталған массивте m элементтерді іздеу.

5) Жазбаларды сұрыптаудың функциясын жазу мен тестілеу және оларды кілт бойынша келесі әдістер үшін іздеу:

o)  айырбаспен сұрыптау және бинарлы іздеу;

p)  қайықты сұрыптауы және бинарлы іздеу;

q)  Шелл сұрыптауы және бинарлы іздеу;

r)    стандартты айырбас және интерполяциялы іздеу;

s)   сызықты қою және интерполяциялы іздеу;

t)    орталықтандырылған қою және бинарлы іздеу.

Жазбаның үш өріс бар, мысалы, фамилия, аты, телефон нөмірі 30-дан кем емес жазба бар. Іздеу менюден берілген кез келген кілт бойынша жүргізіледі.

 

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

1)      Сұрыптауды қалай түсінуге болады? Сұрыптаудың мақсаты?

2)      Сұрыптау қандай екі класқа бөлінеді?

3)      Сұрыптау әдісіне қойылатын негізгі талаптар.

4)      Іздеу алгоритмін көрсетіңіз.

5)      Сұрыптау және іздеу алгоритмдерінде көрсеткіштік типті қалай қолдануға болады?

6)      Шелл сұрыптау әдісінің артықшылықтарын келтіріңіз.

7)      Тізбекті іздеу алгоритмі.

8)      Бинарлы іздеу алгоритмі.

 

А қосымшасы

 

А.1 кесте- Операцияларды сипаттау (басымдылығы кему бойынша орналасқан)

Операция

Сипаттау

()

Функцияны шақыру

[]

Массивті белгілеу

.

Әдістерге және өрістерге объект арқылы қол жеткізу

->

Әдістерге және өрістерге сілтеме  арқылы қол жеткізу

!

Логикалық терістеу

~

Бит бойынша терістеу

-

Белгінің өзгеруі

++

Инкремент

--

Декремент

&

Адресті алу (&a)

*

Адреске қол жеткізу (a*)

(тип)

Типті түрлендіру

sizeof()

өлшем  (байтпен)

*

Көбейту

/

Бөлу

%

Бөлуден қалдық

+

Қосу

-

Алу

Кіші

Үлкен

<=

Кіші немесе тең

>=

Үлкен немесе тең

==

Тең

!=

Тең емес

&

Логикалық “және”

^

Разряд бойынша жоққа шығару НЕМЕСЕ

|

Разряд бойынша логикалық НЕМЕСЕ

&&

Логикалық “және”

||

Логикалық “немесе”

?:

Шарт операциясы

=

Меншіктеу операциясы

,

Үтір операциясы

+=   -=   *=   /=   <<=   >>=   &=   |=   ^=

Бинарлы операциялар

Б қосымшасы

Б.1 кесте - Математикалық функциялар

Функция

Математикалық белгіленуі

Белгіленуі

Абсолюттік мән

|x|

fabs(x)

Косинус

cos x

cos(x)

Синус

sin x

sin(x)

Тангенс

tg x

tan(x)

Экспонента 

ех

exp(x)

 Дәреже

ху

pow(x,y)

Дәрежелік функция

10n

pow10(n)

Натуралды логарифм

ln x

log(x)

Ондық логарифм

log x

log10(x)

Түбір табу

sqrt(x)

Әдебиеттер тізімі

1.      Златопольский Д.М. Сборник задач по программированию. — СПб.: БХВ-Петербург, 2007. — 240 с.

2.      Дж. Коплиен. Программирование на C++. - СПб.: Петербкрг, 2005. -  480 с.

3.      Культин Н. С/С== в задачах и примерах. - СПб.: БХВ- Петербург, 2004. - 288 с.

4.      Павловская Т.А. С/С== Программирование на языке высокого уровня. -СПб.: Питер, 2005. - 461 с.

5.      Шилдт Г. Искусство программирования на С++. - СПб.: БХВ- Петербург, 2005. - 496 с.

6.      Павловская Т.А. С/С++. Программирование на языке высокого уровня.-СПб.: Питер, 2003. - 461 с.

7.      Фридман А.,Кландер Л.,Михаэлис М.,Шильдт Х.С/С++. Архив программ.-М.: ЗАО «Издательство БИНОМ», 2001. - 640 с.

8.      Шилдт Г.С++.Руководство для начинающих.-М.:Издательский дом «Вильямс», 2005. - 672 с.

9.      Подбельский В.В.Язык Си++. - М.: Финансы и статистика, 2003. - 560 с.

10.  Бондарев В.М.Програмирование на С++. - Харьков: Компания СМИТ, 2005. - 284 с.

11.  Штерн В.Основы С++.Методы программной инженерий. - М.: Издательство «Лори», 2003.- 860 с.

12.  Страуструп Б. Язык программирования С++.-http://www/research.att.com/-bs.

13.  Лафоре Р. Объектно-ориентированное программирование в С++.4-ое изд.- СПб.: Питер, 2011. - 928 с.

14.  Савич У. С++ во всей полноте. - Киев:Издательская группа ВНV; СПб.: Питер, 2005. - 784 с.

Қосымша  жоспары, 2013 ж. реті 27