Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kurakova C++ shpor.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
136.72 Кб
Скачать

1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:

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

құраушылары болып саналады.

Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.

Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.

Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.

Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.

Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады

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

Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін – бұл келесі түрдегі декларацияны беру:

FILE * fp;

FILE * fopen(char*name, char* mode);

Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.

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

int fscanf( FILE*fp, char * format,…)

int fprintf( FILE*fp, char * format,…)

3.

Билет №29

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

Келесі бірнеше жолдар * және & операторлары қалай қолданылатынын көрсетеді.

ip=&x;           // көрсеткішке х айнымалысының адресі меншіктелген ip - х-ті көрсетеді

y=*ip;             // y енді 2-ге емес, 1-ге тең

*ip=0;             // х енді 0-ге тең

ip=z;               // ip - z (бастапқы) массивінің 0 –ші элементін көрсетеді.

            ip = &z [5]; // ip - енді z массивтің 5 элементін көрсетеді.

Бұдан көрсеткіш айнымалысы декларацияның синтаксисі, бұл айнымалы кездесуі мүмкін болатын "синтаксис” өрнегіне бейімделеді. Көрсетілген принципті функцияны сипаттау қатынасында да қолданамыз. Мысалы, double *dp, atof(char*) жазбасы *dp және atof (s) өрнегі double типінен екендігін, ал atof функциясының аргументі char-дың көрсеткіші (нақты түрде, стрингті көрсету) екенін білдіреді.

Көрсеткішке берілген типтің объектісіне ғана жіберілуіне рұқсат етілген.

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

Көрсеткіштердің өзі айнымалылар болғандықтан, мәтінде олар сілтемені ашу операторынсыз да  кездесуі мүмкін.

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

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

Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын swap функциясы арқылы орындалатынын қарастырайық.

Егер  swap функциясы келесі түрде анықталса:

   void swap (int x, int y)

{ int temp;

   temp=x; x=y; y=temp;

}

онда swap(a,b)-ны шақыру a мен b айнымалыларына ешқандай әсер етпейді, swap олардың мәндерінің көшірмесін ғана алады.Нәтижеге жету үшін алмастырулар, swap функциясының формальды параметрлері көрсеткіш ретінде сипатталуы керек, алфункцияны шақырудағы аргументтер , swap (&a, &b)-ның сәйкес параметрлерінің адрестерімен көрсетілуі тиіс..

void swap (int *px, int *py)

{int temp;

   temp=*px; *px=*py; *py=temp;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]