Лекция. Модульдік программалау концепциясы 9 страница



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

printf () - экранға мәтінді не аргументтердің мәнін форматты түрде шығаруға арналған стандартты функция. Мысалы, программада екінші printf операторы төрт бөлімнен тұр: басталымы - функция аты, оның ішіне үтірлер арқылы бөлініп үш аргумент жазылған. Біріншісін (тырнақшалар ішінде жазылған " Paduyc =% d ұ зынд.=% f / n " аргументін бас қ а ру жолы не форматтық жол деп атайды. Ол экранға шығаратын келесі r , length аргументтерінің мәндер форматын (жазылу үлгісін) анықтайды.

Формат % символынан басталады да, оның соңына тағайындалған форматтық символ жазылады. Мысалы, басқару жолына енгізілген %d - формат спецификаторы (спецификатор - форматты түрлендіру командасы). Ол сәйкес аргументке бүтін ондық санды пайдалану керектігін нұскайтын символдық тұрақтыдан тұрады. Форматтық символдар 1.3-кестеде берілген.

Тырнақшалар ішінде соңғы қарастырылып жазылған \n символдық тұрақтысы — курсорды келесі жолдың басынан бастап орналастыру командасы. Мұндай бас қ арушы символ жаңа жол символы деп аталады. Баскарушы символдар 1.4-кестеге енгізілген. Кестеде бос орын символы да бар. Оны пайдалану үшін формат бойынша шығару (printf()) операторының басқару жолында бос орындар macman кетсе бол ғ аны.

Мұндағы ескеретін жайттар: 1. Erep шығаруда форматтың қажеті болмаса, онда операторды (1-) программаның бірінші printf операторы сияқты форматсыз пайдалана беруге болады. 2. Екінші printf операторында %f форматы %2.3 f түрінде берілсе, сәйкес нәтиже 0.001 дәлдікпен шығады.

scanf () форматты түрде енгізу функциясы (соңына нүктелі үтір қойылып жазылғандықган, ол — оператор да). Программада оған екі аргумент енгізілген: біріншісі — формат спецификаторы, екіншісі — жадқа енгізілетін айнымалы. Оның алдында жазылған & (амперсанд) символы — адрес (ол адресті алу символы деп аталады). Бұл символ оның соңына жазылған айнымалы адресін тез тауып, scanf() функциясының дұрыс жұмыс істеуін қамтамасыз етеді, яғни айнымалы жазылатын жерге айнымалының атауы емес, адресі енгізіледі.

getch () - кез келген перне басылғанша мәндермен жұмыс жасалатын терезелік бетті уақытша ұстап тұруға арналған оператор (Турбо Паскальдағы ReadKey операторы сияқты, ол басылған перненің кодын кабылдайды). Кез келген перне басылған кезде программа жазылған экран қайта көрінеді.

Return 0; - ағымдық функциядан (ішкі блоктан) шығып, баскаруды шақырылған программаға (негізгі жүйеге) қайтарып беру операторы. Си, Турбо Си және Borland C++ тілдерінде басқаруды main () фунциясына кайтарып беру операторы да бар - ол return ; түрінде жазылады.

Ескерту. Программаны құру кезінде бір жолда бірнеше операторларды жазуға да болады.

Тапсырма.

1. y=5x+7 функциясының мәнін есептейтін программа құру керек.

2. y = 3x2 + 5x - 3 функциясының мәнін есептейтін программа құру керек.

Тақырыпта пайдаланылатын стандартты файлдар

Стандартты файлдар қ ұ рамында ғ ы функциялар
stdio.h Енгізу / шығару
сопіо.h Қолданылатын кейбір функциялар
string.h Символдар жолымен жұмыс істейтін функциялар
stdlib.h Жалпы міндеттеу
math.h Математикалық функциялар
error. h Қателерді тексеру функциялары
time.h Деректер және уақытпен жұмыс істейтін функциялар
......., т.б. – > ANSI С тілінде 15 стандартты файл бар.

 

Формат символдары

Символдар форматы Тағайындама Тип
%d Бүтін ондық сан (енгізу/шығару) int
Символ (енгізу/шығару) Char
%s Символдар жолы (енгізу/шығару) Char []
%f Ондық нақты сан (шығару) Float/ double
Ондық нақты сан (енгізу) Float
Көрсеткіш (енгізу/шығару) Түрлі

Ескерту. енгізу — scanf функциясында, шығару -printf функциясында пайдаланатынын білдіру жазулары.

 

Басқарушы символдар

Кесте

Басқарушы символдар

Та ғ айындама

 
\n

Жаңа жол (курсорды жаңа жол басына жылжыту)

 
\f

Жаңа бет, бетті аудару

 
\r

Каретканы қайтару (курсорды жол басына)

 

\ t

Көлденең табуляциялау (курсорды көлденеңі бойынша оңға жылжыту)

\ v

Тік табуляциялау

\ o

Нөлдік байт, жол соңын белгілеу

\?

Сұрақ белгісі (белгіні шығару)

Бос орын символы

       

 

Математикалық функциялар

Математикалық функциялар math . h , ал, кейбірі stdlib . h стандартты файлдардың құрамына енгізіліп қойылған:

 

fabs(x)                         Санның абсолют шамасы.

ceil(x)                           Санды бүтінге дейін дәлдіктеу.

floor(x)                        Санның бүтін бөлігі.

pow(x, y)                     x санының y дәрежесі.

sqrt(x)                          Санның квадрат түбірі.

log(x)                           Натурал логарифм.

log10(x)                    Ондық логарифм.

rand()                      [0 .. 32767] аралығында кез келген int

типті бүтін сандарды өндіру.

randomize()                 Программаны екінші рет қосқанда басқа

sin(x),                      Тригонометриялық функциялар (x-paдиан).

cos(x),

tan(x)

Ескерту. C++ тілінде нақты, не, тіпті, бүтін санды дәрежелеу кезінде x, y бүтін сандарының мәндерін 0.1 дәлдікпен енгізіп қойған дұрыс, мысалы: 54 = pow(5.0, 4.0). Ал, x радианды градустық өлшемге айналдыру формуласы: x = pi * х/180.0 ( pi = 3.14159).

1-мысал. 1) 50-ге дейінгі төрт кездейсоқ санды шығару;

2) 54 және | -56 | мәндерін есептеу; - ' -

3) 12.78 санын бүтінге дейін дәлдіктеу және бүтін бөлігін табу.

Осы үш тапсырманы орындайтын программа құру керек.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <math.h>

main()                                                                          (21)

{

int k, z, dl, zl, z2; float ms[4];

clrscr(); randomize();

for (k=0; k<4; k++);

{

ms[k] = ceil(rand() % 50); printf("%f\n", ms[k];

}

dl = pow(5.0, 4.0); printf("dl =%d\n", dl);

z = fabs(-56); printf("%d\n", z);

printf("log(20) = %f\n”, log(20));

zl = ceil(12.78); printf("zl=%d\n", zl);

z2 = floor(12.78); printf("%d\n", z2);

}

Нәтиже (бір бағанда жазылады):

44

41

43

8                           

dl = 625

56

 log(20)=2.995732  

zl = 13     

z2 = 12

Ескерту. Программа қайта қосылған сайын ms[k] мәндері түрлі-түрлі болып көрінеді. Олай болмас үшін программаға randomize() операторы енгізілді.

C және C++ тілдерінде дәрежелеуге не n>=3 дәрежелі түбір табуға арналған стандартты функциялар жоқ. Бірақ оларды табу үшін арнайы әдістер қолданылатын функция енгізілген: pow . Оның жазылу түрлері:

1. pow(x, y) - бүтін оң не теріс x санының y дәрежесі (= ху ). Мұнда егер x <= 0 болса, онда y саны оң бүтін болуы керек.

2. pow ( x .0, (1.0/n.0) - бүтін x санының n дәрежелі түбірі.

2-мысал. Программа бойынша (-2)5 және сандарының мәндерін табу керек.

Программа үзіндісі:

main()                                                              (22)

{

float y2; int yl;

yl = pow(-2, 5);

printf("yl=%d\n", yl);

y2 = pow(65.0, (1.0/4.0));

printf("y2=%d\n", y2);

}

// Нәтиже :

yl = -32      

 y2 = 2.839411


16-лекция. Программалық құралдар

Жоспар:

1. Препроцессорлық өңдеу сатылары және командалары.

2. Мәтінде ауыстырулар.

3. Файлдардан мәтіндерді енгізу.

4. Шартты компиляция.

5. Препроцессорлық құралдармен макроауыстырулар.

6. Кірістірілген (алдын ала анықталған) макроаттар.

 

# defіne нұсқауы

Бұл — мәтіндік процессордың қарапайым түрде "Табу және алмастыру" командасын орындайтын нұсқау. жазылу синтаксисі:

# define АРГУМЕНТІ аргумент2

Мұндағы АРГУМЕНТІ — сөз, символ не мәтін. әдетте оны макрос деп атайды. Келісім бойынша макрос бас әріптермен жазылады. Макростан соң кеміңце бір позициялық бос орын қалдырылып аргумент2 енгізіледі. Ол - программада кездесетін бір символ не символдар тізбегінен тұратын өрнек. Ол символдар тізбегі болса, араларына бос орындар қалдырыльш жазылады. Программа іске қосылған соң препроцессор программа ішіндегі нұсқауларға енгізілген қанша да болмасын макрос кездессе, оларды аргумент2-мен алмастырып қояды.

Мысалы, nporpaммaдa #define MAX 100 нұсқауы енгізіліп, float a [ MAX ], в[МАХ] сипаттамалары жазылған болса, нұсқау a, в массивтерінің аргументтерін 100 санымен алмастырып қояды.

Тағы бір мысал. Программада кездескен

# define X1 (b+c)

# define X2 ( X1 + X1 )

int X2;

жазуларын оқып шығып препроцессор int X2; сипаттамасын int ((b+c) +(b+c)); сипаттамасымен алмастырып қояды.

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

Мысал. XI, X2 макростарын сәйкес a+b және 2X1+3X1 аргументтерімен алмастырып, a=2, b=4 үшін X2 мәнін табу программасын құру керек.

# include <stdio.h>

# include <conio.h>

# define X1 (a+b)

# define X2 (2*X1+3*X1)

main ()                                     (16)

{

int a=2; int b=4; clrscr();

printf("X2=%d",X2);

getch(); return 0;

}

//Нәтиже: X2=30


17-лекция. Нәтижелі программаларды жазудың алгоритмдік негіздері

Жоспар:

1. Есеп шығарудың негізгі программалық нәтижелі схемалары (экстемум, Горнер

схемасы, тізбек мүшесі және қосындысы және т.б.).

ПЖ технологиялылығы деңгейін өсірудің бір тәсілі құрылымдық бағдарламалау болып табылады. Бағдарламалық іске асыратын есептеу процестері мынадай үш түрге бөлінеді:

  1. Сызықтық
  2. Тармақтық
  3. Циклдік

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

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

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

Келтірілген есептеу процестерін бағдарламада іске асыру үшін сәйкес басқару операторлары қарасырылған. Жоғарғы деңгейлі алғашқы процедуралық бағдарламалау тілдерінде есептеу процесінің түрі деген түсінік кездеспейтін, оларда операторлардың сызықтық тізбектерін өзгерту үшін шартты және шартсыз командалар қолданылып келді. Сондықтан бұл тілдерде жазылған бағдарламалар қазіргі кезде тек қана төменгі деңгейлі тілдерде қолданылатын құрылымда, яғни өте шатасқан командалар тізбегі ретінде жазылған еді. Дәл осындай бағдарламаның алгоритмдерін белгілеу үшін ГОСТ 19.701-90 мемлекеттік стандарты құрылды. Ол бойынша әрбір іс-әрекеттер тобына арнайы блок сәйкестендіріледі.

Бұл стандарт циклдарды белгілеуге арналған арнайы блокпен жабдықталса да, ол басқарудың еркін тәсілін пайдалануды да жоққа шығармайды. Мысал ретінде, Ассемблер тілінде жазылған келесі бағдарламаны қарастырайық. Бұл мысалда А массивінің ең кіші элементін анықтау процесі қарастырылған.

 

Min E1       Proc    near

                 Lea      Bx,a;        массив адресін жүктеу

                       Mov    Cx,n;            элементтер санын жүктеу  

Less:               Mov    Ax, n;           элементті max ретінде қабылдау 

Cycle:             sub      Cx ;        есептеуді реттеу

                       Jcxf     exit ;              егер барлық сан қарастырылса онда шығу

                      Add      BX,2;            келесі элементтің адресі

                      Cmp      AX, 0(BX); ағымдық элементтерін салыстыру  

                        Jl         less;              егер кеш болса, онда max ауыстыру

                    Jmp      cucle                   әйтпесе келесі элементке өту

Exit:             ret

Min E1         endp.

 

60-ж.ж. кез-келген күрделі алгоритмдер негізгі үш басқару құрылымы арқылы бейнелеуге болатындығы дәлелденген соң жоғарғы деңгейлі бағдарламалау тілдерінде сәйкес құрылымдарды іске асыратын басқарушы операторлар пайда болады. Осы құрылымдарды негізгі базалық құрылымдар деп есептейді. Олар мыналар:

1.Сызықтық – іс-әрекеттердің тізбектей орындалуын білдіреді (1-сурет);

2.Тармақталу – екі іс-әрекеттер нұсқасының бірін таңдауға мүмкіндік береді (2-сурет);

3.Әзір циклі – циклдің басында тексерілетін қандай да бір шарт бұзылғанға дейін орындалатын іс-әрекеттерді анықтайды. (3-сурет);


Дата добавления: 2019-02-12; просмотров: 275; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!