Программалау тілдері туралы


Ауқымды ( глобалды ) айнымалылар



бет30/40
Дата15.12.2021
өлшемі0,64 Mb.
#101004
түріПрограмма
1   ...   26   27   28   29   30   31   32   33   ...   40
Байланысты:
ишпей куатындар ушин. Таратпандар-1

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

Ең үлкен мәнді ( максимумды ) анықтайтын функцияның төрт нұсқасы бар делік : // Екі бүтін санның үлкенін қайтарады : int max ( int , int ) ; // Ең ұзақ iшкi тіркесті кайтарады : char * max ( char * , char * ) ; // Екінші параметр ұзындығын және бірінші параметрді // салыстырып , үлкенін қайтарады : int max ( int , char * ) ; // Бірінші параметр ұзындығы мен екінші параметрді і салыстырып , үлкенін қайтарады : int max ( char * , int ) ; void f ( int a , int b , char * c , char * d ) { cout << max ( a , b ) << max ( c , d ) << max ( a , c ) << max ( c , b ) ;

Функциядан шыққан кезде ол орналасқан стек аймағы босатылады , сондықтан бір функцияның бірнеше шақырылулары арасындағы жергілікті ( локалды ) айнымалылардың мәндері сақталмайды . Егер мұндай жағдайдан құтылу қажет болса , жергілікті айнымалыларды жариялау кезінде static модификаторы қолданылады : #include " stdafx.h " #include < iostream > using namespace System ; using namespace std ;

Компилятор берілген типке сәйкес келетін дұрыс кодты автоматты түрде генерациялайды . Осылайша , автоматты түрде өзін - өзі асыра жүктейтін және параметрлеумен байланысты қосымша шығындары жоқ функция құрылады . Қарапайым шаблон - функцияның форматы : template < class Type > тақырыбы { / * функция тұлғасы * / }

Компилятор осы max функциясын шақырған кезде нақты параметрлер типіне сәйкес келетін функция нұсқасын таңдайды . Мәліметтердің әртүрлі типтерімен жұмыс істеу үшін бірнеше асыра жүктелген функцияларды қолдануға болады , бірақ мұндай программада логикасы бойынша бірдей бірнеше функция пайда болады және әрбір жаңа тип үшін жаңа функция енгізу қажеттігі туады . С ++ тілінде параметрлеудің қуатты құралы шаблондар болып табылады . Функциялардың шаблондары және кластардың шаблондары болады . Функциялар шаблондарының көмегімен әртүрлі типтегі мәліметтер үшін қолданылатын алгоритмді анықтауға болады , ал белгілі бір мәліметтер типі функцияға компиляция кезінде параметр ретінде беріледі .

Деректер құрылымы " термині кем дегенде екі түрлі мағынада қолданыла алады . Біріншіден , деректер құрылымы бұл деректерді ұйымдастырудың логикалық немесе математикалық моделі . Шын мәнінде , деректер құрылымын ЭЕМ жадындағы ( физикалық құрылым ) дәл осы деректердің сипаттамасы ретінде қарастыруға болады және қайсыбір программа айналысатын кез - келген ақпараттық объектінің ортақ қасиеті болып табылады . Екіншіден , деректер құрылымы бұл деректердің логикалық тұжырымдамасын нақты іске асыру , программадағы және Компьютер жадындағы объект ( үлкенірек немесе кішірек ) . Бұл жеке айнымалы , массив немесе одан да күрделі программалық объект болуы мүмкін , мысалы , тiзiм , ағаш және т.б.

puts ( msg ) функциясын орындағанда , оған msg мәні , яғни тіркес құрамындағы бірінші символ адресі беріледі . Одан кейін рutѕ сол символдың нөлдік символ емес екенін анықтап , ары қарай адреске бірді қосып , келесі символды оқиды , т.с.с. тіркес соңына дейін жетеді . Нөлдік символға жеткен соң , puts жұмысты аяқтайды . Осындай тәсіл тіркес ұзындығына шек қоймай , нөлдік символға дейінгі символдарды біртіндеп оқуды жүзеге асырады .

Архитектурасы тұрғысынан мыналарды бөлуге болады : 1. сызықтық құрылымдар бір өлшемді массивтер ( немесе векторлар ) , cЫЗЫҚТЫҚ тізімдер , сызықтық кезектер , стектер ; 2. тікбұрышты құрылымдар – екі өлшемді ( матрицалар ) және көп өлшемді массивтер ; 3. сақиналы құрылымдар – сақиналы тізімдер , сақиналы кезектер , графтардың кейбір түрлері ; 4. тармақталған құрылымдар әр түрлі ағаштар , графтардың кейбір түрлері ; 5. желілік құрылымдар — графтар .

Деректер құрылымын құру әдісіне сәйкес бөлуге болады : 1. қарапайым стандартты типтегі айнымалылар , қарапайым ( яғни динамикалық емес ) массивтер , жазбалар және т . б .; 2. динамикалық ( арнайы операциялар немесе динамикалық бөлу және босату процедуралары арқылы жасалатын және жойылатын ) динамикалық массивтер , Динамикалық айнымалылар , байланысқан тізімдер , ағаштар .

Программа жұмысы кезіндегі тұрақтылыққа байланысты мыналарды ажыратады : 1. статикалық ( өзгермейтін ) құрылымдар әр түрлі типтегі айнымалылар , жазбалар ( C ++ - те құрылымдар ) , массивтер , соның ішінде динамикалық , сонымен қатар тізімдер , ағаштар мен графтар , олар бекітілген және мысалы , массив негізінде құрылуы мүмкін жағдайларда . 2 . динамикалық ( өзгермелі ) тізімдер , ағаштар , кезектер , стектер , жалпы жағдайда графтар .

С тілінде сөз тіркестері сhаr типті бір өлшемді жиым ретінде қарастырылады , яғни сөз тіркесі нөлдік байтпен аяқталатын сhаr типті бір өлшемді жиым . Нөлдік байт барлық биттері де нөлге тең байт , ол \ 0 ' символдық константасымен анықталады ( тіркес соңы белгісі немесе нөл - терминатор ) . Сондықтан егер тіркесте k символ болса , онда жиымды сипаттауда k + 1 элемент көрсетілуі тиіс . Мысалы , char a [ 7 ] деген сипаттау тіркестің 6 символдан тұратынын , ал соңғы байт нөлдік екенін білдіреді .

С тіліндегі тіркестік ( жолдық ) константа – қос тырнақшаға алынған символдар жиыны . Мысалы , " Берілген тапсырма " тіркесі , оның соңына нөлдік байтты компилятор автоматты түрде өзі жазады . Айнымалы мәні болатын сөз тіркесін сипаттау кезінде бірден көрсетуге болады , мысалы , char Si [ 10 ] = " 123456789 " , s2 [ ] = " Болат " . Соңғы сөз ұзындығы тіркестің символдары санымен анықталады . Символдар тіркесін пернелерден енгізу үшін екі стандартты функция — scanf ( ) немесе gets ( ) қолданылады , ал олардың прототиптерi stdio.h тақырыптық файлында болады .

с тілінде символдарды біртіндеп енгізу / шығару үшін printfО және scanf ( ) функцияларының % c форматы қолданылады . getch ( ) параметрсіз функция , басылған перненің кодын ( int ) береді , экранға ешқандай символ шығармайды . getchar ( ) параметрсіз функция . Пернеден символдарды бір - бірлеп игізеу Сөз тіркесі < Enter > пернесі басылғанша енгізіле береді , оған дейін оны өзгертуге де болады

Ал енді символдарды ASCII - кодтарымен бірге шығаратын мына программаны көрейік . / * латын әліпбиі * /

#include " stdafx.h "#include < iostream > #include < conio.h > #include < stdio.h > using namespace System ; using namespace std ; int maino

Енді символдық тіркестерден тұратын жиымдарды қарастыралық . Бұл жиымдардың әрбір жолы символдық жиым болып табылады . Мысалы , статикалық жиымның сипатталуы келесідей түрде жазылуы мүмкін : static char * m [ 4 ] = { " регистр " , " жады " , " курсор " , элемент " } ; бұл жиым символдық тіркестерге сілтейтін 4 нұсқауыш болып табылады . Сонымен , символдық тіркестер жиымдар болып табылатын болса , онда осы жиымдарға сілтейтін 4 нұсқауыш карастырылады . 1 - жолға сілтейтін 1 - нұсқауыш болып m [ 0 ] есептеледi , m [ 1 ] 2 - жолға сілтейтін 2 - нұсқауыш болып табылады .

msg алдындағы жұлдызша ( * ) компиляторға оның символға нұскауыш екенін білдіреді , яғни msg белгілі бір символ адресін сақтай алатын айнымалы . Бірақ мұнда компилятор символдар үшін ешқандай орын бөлмейді және msg да ешқандай мәнге ие болмайды . Компилятор strсру ( msg , " Сәлем , Азат ! " ) операторын кездестіргенде , ол тағы екі түрлі әрекет орындайды : объектілік код файлы ішіндегі бір орынға соңына ( 0 ) символы қосылған " Сәлем , Азат ! " тіркесін ( ASCII коды 0 ) жазып қояды . тіркестің символы адресін msg айнымалысына меншіктейді . strcpy функциясын орындалып , рuts ( msg ) командасы бұрынғыша нөлдік символға дейінгі мәліметті көшіреді .

Компьютер жадынын қажетті көлемін айқын көрсетуге де болады . Мысалы , сыртқы сипаттауда келесі жолдың мынадай түрде жазылғаны көрсетілген . char c [ 25J = " Білім – өмір шырағы " ; Элементтердің саны жолдың ұзындығынан бір символ артық болуы керек , яғни оның ең соңында 10 ' символы болуы тиіс . Статикалық сыртқы жиымдағы бұрынғы қарастырылган әдеттегі жиымдар оларды қолдану кез автоматты түрде О - мен инициалданған болатын . Ал сөз тіркестерін пайдалану кезінде де статистикалық немесе сыртқы жиымдар солар тәрізді о ИнициалданадыСимволдық тіркестер Символдық жолдарды немесе тіркестерді бірнеше тәсілмен өңдеуге болады , олардың негізгілері : тіркестік константаларды қолдану ; 2 ) char типті жиымды қолдану ; 3 ) char типіне сілтейтін нұсқауыштарды пайдалану ; 4 ) символдық тіркестерден тұратын жиымдарды қолдану .




Лекция №7



Достарыңызбен бөлісу:
1   ...   26   27   28   29   30   31   32   33   ...   40




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

    Басты бет