7 лекция Си функциялары және жиымдар.

Slides:



Advertisements
Similar presentations
5В «Геология және пайдалы қазбалар кен оындарын барлау» мамандығының студенттері үшін «Геохимия» пәні бойынша Слайд дәріс Тақырыбы: Екінші дәрежелі.
Advertisements

Квалиметрия әдістері және принциптері. Квалиметрия міндеттері мен әдістерінің жіктелуі – маркетинг және рынокты зерделеу; – өнімді жобалау және әзірлеу;
MyKaz.kz – Ашы қ м ә ліметтер порталы «Тазалы қ – денсаулы қ негізі, Денсаулы қ – байлы қ негізі» MyKaz.kz - Ашы қ м ә ліметтер порталы.
Қазіргі мектепті басқарудың педагогикалық менеджменті пәні 1 24 қаңтар 2014 жыл.
Сабақтың тақырыбы: Антиген-антидене реакцияларының механизмі.
Деректерді басқару SQL тілі.
Паскаль тілінде программалау
№2 орта мектебінің ағылшын тілі мұғалімі
Ребус шешу М 10 , Монитор , , , , , Пернетақта.
Сілтеу есімдігінің түрленуі & Demonstrative Pronouns
қолданушыларына арналған
Жұмыс дәптері Visual Basic Информатика пәнінен таңдау курсы 10-сынып
Сыныбы: 9 сынып Мұғалім: Ізтілеуова Г Сабақтың тақырыбы: Паскаль тілінің параметрлі қайталану операторы (практикалық.
Панорамалық сабақ №125 С.Сапарбекова атындағы орта мектеп
Сөз мағынасы.
Бәрі де жақсы болады.
Қайырлы күн!.
Қайталау операторлары
“VB-да Графикалық әдістер мен процедуралар”
Маңғыстау облысы Жаңаөзен қаласы №17 орта мектеп
Криоса қ тау. Жоспары: Кіріспе Негізгі бөлім 1. Криосақтауға түсініктеме 2. Криосақтау әдістемесі 3. Криопротекторлар 4. Витрификация 5. Жұмыртқа клеткасын,
      ШАҒЫН ЖОБА Тақырыбы: Критериалды бағалау жүйесін қазақ тілі пәнін оқытуда (диктант) қолдану    Free Powerpoint Templates.
Орындаған: Тоқсанбаева Н.Қ.
Информатика және ақпарат
Жұлдызды сәт.
№97 мектеп 9 сынып алгебра Математика пән мұғалімі
Массивтер. Массивтің көлемі, өлшемі, индексі
жайлы жалпы түсініктер
БРЕЙН-РИНГ Информатика.
Жаңаөзен қаласы №17 орта мектеп
Металдардың коррозиясы
Сабақтың тақырыбы: Алгоритмнің түрлері..
Математика 5 сынып.
Тақырыбы: Деректер қоры
9 сынып Сабақтың тақырыбы: Құрама шарт және таңдау операторы.
«ҚазМұнайГаз» ҰК АҚ-ның шетелдік компаниялармен, сонымен бірге қытайлық әріптестермен бірлескен жобаларды дамыту мәселелері жөнінде Алматы 2011 мамыр.
Бұл мәлімет ШЫНДЫҚ па немесе ЖАЛҒАН ба?
Тапсырма: Берілген мәтіннен Жерден 300 жарық жылдан артық ара қашықтықта орналасқан және Күннен жарықтығы 7000 еседен артық жұлдыздар туралы ақпарат табыңдар.
ж. Сабақтың тақырыбы: “Microsoft Excel электрондық кесте туралы жалпы түсінік”
«Қазіргі заманда жастарға ақпараттық технологиямен байланысты әлемдік стандартқа сай мүдделі жаңа білім беру өте қажет» Н.Ә.Назарбаев.
Ханафи мазхабы бойынша, жеуге болмайтын жануарлар
Математика-информатика (біріктірілген сабақ )
Subject: Physics Lesson theme: Newton’s second law Class: 9 a Date:
Дәріс 5. Психологиялық мектептер. Психоанализ.. Психоанализ ХІХ ғасырдың соңы мен ХХ ғасырдың басында пайда болған, оның негізін қалаушы белгілі психиатр.
" When is your birthday ?".
Алматы сән және дизайн колледжі
«Бүгінгідей жаһандану жағдайында мемлекет пен адам озық, бәсекеге сай болуы үшін, ең бірінші білім мен ғылым өркендеуі қажет.»
Қасымова Алима Ертайқызы
Информатика пәнінің алғырлары
ТАҚЫРЫБЫ: СӨЗ ЭТИКЕТІНІҢ НЕГІЗГІ ҚЫЗМЕТТЕРІ
Үй тапсырмасын тексеру. “Білемін”бөлімі
Сабақтың тақырыбы:Кестелер.Кесте құру
Тесттік жұмыс 1. Windows-дің объектілерін әр түрлі құрылғылармен басқаруға болады, оның ең негізгісін атаңдар. А) пернетақта Ә) тышқан.
Ақпараттың көлемі және оның өлшем бірліктері
КОМПЬЮТЕР-ӘМБЕБАП ЕСЕПТЕУІШ МАШИНА
Операциялық жүйені басқарудың негізгі тәсілдері және объектілері
Табылған дәлелдемелерді ескере отырып, шешімді қалай шығарамыз?
Сабақтың тақырыбы: «Циклді ұйымдастыру»
Дүние жүзіндегі урбанизация процесі.
МЕББМ « Қ аза қ стан – Ресей НУО « Казахстанско - Российский медициналы қ университеті » медицинский университет МЕББМ « Қ аза қ стан – Ресей НУО « Казахстанско.
ОПЕРАЦИЯЛЫҚ ЖҮЙЕЛЕР.
Оқыту үшін бағалау.
15 лекция Графикалық режим (жалғасы).
6-лекция Турбо Си тілі элементтері.
Графикалық файлдарды ендіру. Дыбыспен жұмыс.
Интернет желісі.
Тақырыбы: «Жасанды тістер, оның түрлері».
жылы ҚР жалпы орта білім беру ұйымдарында оқу жетістіктерін сырттай бағалауды өткізуге дайындық бойынша ақпараттық-түсіндірме жұмыстарын.
Ирисметова Лобар Базарбай Гүлдана. 1.«Қанша тіл білсең, сонша адамсың»; 2.Қостілділік ұғымы, деңгейлері; 3. Эстон мәдениеттанушысы М. Хинт қостілділік.
ӘЛ-ФАРАБИ АТЫНДАҒЫ ҚАЗАҚ ҰЛТТЫҚ УНИВЕРСИТЕТ Физика-техникалық факультеті Қатты дене физикасы және бейсызық физика кафедрасы «БІРДЕЙ ПАРАМЕТРЛЕРІ БАР ЖОЛАҚТЫ.
Presentation transcript:

7 лекция Си функциялары және жиымдар

Сұрақтар: Cи тіліндегі функциялар Жиымдарды пайдалану 3. Адрестік операциялар 4. Нұсқауыштар 5. Жиымдар және оларға қолданылатын нұсқауыштар 6. Жиымдарды сұрыптау

1. Cи тіліндегі функциялар Програмада кем дегенде, бір функция болады және программадағы бір функцияның аты main болуы тиіс. Программаның орындалуы осы main функциясынан басталады. Main функциясының орындалуы барысын-да басқа функциялар шақырылады, ал олар одан да басқа функцияларды шақыруы мүмкін.

Бір функция жұмыс істеп тұрғанда, екінші функ-цияны орындау керек болса, онда бірінші функция жұмысын тоқтата тұрады да, екінші функция жұм-ысқа кіріседі. Ол өз жұмысын аяқтап, return сөзін кезіктіргенде ғана қайтадан бірінші программа өзі-нің тоқтаған жерінен ары қарай іске кіріседі. Функ-ция атынан соң, жақшалар ( ) болуы тиіс. Әрбір функция сипатталып анықталуы тиіс. Функцияның типі және ол арқылы есептелетін мәннің типі бірдей болуы керек. Функция типі көрсетілмесе, келісім бойынша, ол int типтес болып саналады. Енді функцияның сипатталуын қарастырайық. Функцияны сипаттағанда екі түрлі форматты немесе екі стильді қолдануға болады.

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

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

Мысалы, келесі функция void типіндегі мән қайтарады, яғни жұмыс атқарады, бірақ ешқандай мән бермейді: void print(int gg, int mm, int dd) { printf(“\n жыл: %d”,gg); printf(“\t ай: %d”,mm); printf(“\t күн: %d”,gg); } Енді программада осы функцияны төмендегідей түрде шақырсақ, printf(2006, 10, 15); Оның нәтижесі: жыл: 2006 ай: 10 күн:15 болады.

нәтижесі: 14:16:25 (час:мин:сек.) болады. Келесі функция ешқандай мән қайтармайды және ешқандай параметрлері де жоқ: #include <stdio.h> //vremia.cpp void real_time(void) { printf(“\nТекущее время: %s”,_ _TIME_ _ “(час: мин: сек.)”); } main() { real_time(); нәтижесі: 14:16:25 (час:мин:сек.) болады. ТурбоСи

Функцияны компилятор дұрыс түсінуі үшін оны шақырып пайдаланғанға дейін функцияның қысқаша сипаттамасы берілуі тиіс, яғни функция программаның соңғы жағында сипатталса, программа басында типі функция_аты (параметрлер_спецификациясы); сияқты оның прототипі – алдын ала қысқаша көрсе-тілуі тиіс. Прототипте формальды параметрлер атын жазбаса да болады, мысалы: double f(int n, float x); немесе double f(int, float);

Прототипті көрсетуді алдыңғы мысал арқылы былай көрсетуге болады: #include <stdio.h> void real_time(void); main() { real_time(); } void real_time(void) { printf(“\nТекущее время: %s”, _ _TIME_ _ “(час: мин: сек.)”);

Оң бүтін санның факториалын анықтау функциясын былай жазуға болады: long fakt(int k) { if (k<0) return 0; if (k==0) return 1; long p=1; for (int j=1; j<=k;j++) p*=j; return (p); } Теріс сандардың факториалы болмайды, мұндайда функция 0 мәнін береді, ал 0!=1, қалған жағдайлар-да бұл функция цикл ішінде факториалды есептейді.

// с=( m!*n!)/(m+n)! eсептеу funk_2.cpp #include <conio.h> #include <stdio.h> long fakt(int k) { if (k<0) return 0; if (k==0) return 1; long p=1; for (int j=1; j<=k;j++) p*=j; return (p); } main () {int m,n; float c; printf("m,n = : "); scanf("%d%d",&m,&n); ТурбоСи

c=fakt(m)*fakt(n)/fakt(m+n); printf("c=%e\n",c); getch(); } Функция ішінде орналасқан айнымалылар типтері сипат-талуы осы функцияның ішінде ғана анықталған болып саналады, (мұнда тек қана main функциясы ерекше жағдайда болып саналады). Программа мәтінінде функ-циялар кез келген ретпен орналасуы мүмкін. Функцияны шақыру үшін функцияның аты және жақшада нақты аргументтері көрсетіледі. Функция өз жұмысын аяқта-ғаннан кейін есептелген нәтижені return операторы арқылы қайтарады. Бұл оператордың жалпы түрі мына-дай: return(өрнек); return операторы функцияның орындалуын аяқтайды да, функцияны шақырған оператордан кейінгі жолға басқаруды береді.

2. Жиымдарды пайдалану Массив немесе жиым – бір типтегі элементтердің реттелген жиыны. Олар бір атаумен – идентификатормен аталады да, индексті айнымалы ұғымына сәйкес келеді. Мысалы, мынадай тізбек 0 1 1 2 3 5 8 13 21 Фибоначчи тізбегінің 9 элементін құрайды (алғашқы екі санды таңдап алып, келесі санды алдыңғы екеуін қосу жолымен алады), математикада a9 = 0,1,1,2,3,5,8,13,21. Си тілінде осы тізбекке сай жиымды сипаттап, оған бастапқы мән беріп инициалдау үшін былай жазамыз: int fib[8]={0,1,1,2,3,5,8,13,21}; немесе int fib[]={0,1,1,2,3,5,8,13,21}; мұндағы fib – жиым аты, оның элементтері типі int, ал ұзындығы – 9, жиым элементтерінің индек-стері 0-ден бастап нөмірленеді, сол себепті 9 элемент 8 индекспен көрсетіледі. Мәндері көрсетілсе, индексті жазбаса да болады.

Ал былай болса, int fib[8]={0,1,1,2,3}; қалған элементтер 0 болып саналады. n=10; k=2; fib[n-k]={0,1,2,3}; деп те жазуға болады. Жоғарыдағы тізбектің 3-ші элементін бір бүтін айнымалыға меншіктеу үшін былай жазамыз. int а=fib[3]; // а = 2 Жиымды сипаттау кезінде оның ұзындығы нақты санмен көрсетіледі, мыс., a[20], a[n] деп жазу үшін алдын ала #define n 20 жолы көрсетіледі немесе const n=20; болып жазылады.

Жиым элементтерін енгізу немесе оларды түрлендіру үшін цикл операторы қолданылады. Төменде 10 элем-енті бар жиымды 0-ден 9-ға дейінгі сандармен толты-рып, сонан кейін оларды кері бағытта экранға шығару мысалы көрсетілген: main () { int a[10]; int i; for (i = 0; i<10; i++) a[i] = i; for (i = 9; i>=0; i--) printf(“ %i”, a[i]); }

Си тілінде жиымды жиымға бірден теңестіруге бол-майды, мыс Си тілінде жиымды жиымға бірден теңестіруге бол-майды, мыс., а0, а1, а2, ... , а9 және с0, с1, с2, ... , с9 жиымдары үшін а=c деп жазуға болмайды. Олардың элементтерін цикл ішінде бір-біріне біртіндеп теңес-тіру керек. int a[9], c[9]; … a=c; // қате Мұның орнына мынадай цикл жазу керек: for (int i=0; i<9; ++i) a[i]=c[i];

Есеп. Бүтін оң және теріс сандардан тұратын a[n] жиымының жұп нөмірлі элементтерінің қосындысын табу керек, мұнда n саны енгізіледі, ал жиым элементтерінің мәндері кездейсоқ бүтін сандардан тұрады. rand() функциясы 0...32767 аралығын-дағы бүтін сан береді. Оны қолдану үшін stdlib.h директивасын қолдану қажет. Жиым элементтері екі разрядты оң және теріс сандар-дан тұруы үшін алынған кездейсоқ сан 100-ге бөлінгендегі қалдықтан 50 алып тасталынады.

ТурбоСи #include<stdio.h> //sum_mas.cpp #include<stdlib.h> main() { int a[50]; int n; printf("\nЖиым ұзындығы: "); scanf("%d",&n); for(int i=0;i<n;i++) a[i]=rand()%100-50; // кездейсоқ сандар 0 – 32767 printf("%i ",a[i]); // 100-ден қалдық – 50 } int sum=0; for(i=0;i<n;i+=2) sum+=a[i]; // 0, 2, 4 индексті элементтер... printf("\nжұп индексті элементтер қосындысы: %i",sum); ТурбоСи

#include <conio.h> //sum_mas1.cpp #include <stdlib.h> Есеп: Бүтін сандардан құралған А10 жиымы берілген. Сол жиымның оң элементтерінің қосындысын табу керек. #include <conio.h> //sum_mas1.cpp #include <stdlib.h> #define n 10 main () {int i=0,s=0; int a[n]; textcolor(RED); textbackground(WHITE); clrscr();  while (i<n) { printf("a[%i]=",i); scanf("%i",&a[i]); if (a[i]>0) s+=a[i]; i++; } printf(“s = %d\n",s); getch(); иә жоқ басы n енгізу i:=0; s:=0; i<n ? ai енгізу ai > 0 ? s = s + ai; i = i+1; s соңы ТурбоСи

Есеп: Бүтін сандардан тұратын А(n) бір өлшемді жиымы берілген //a[n] ішінен max-ын және оның индексін табу #include <stdio.h> // max.cpp #include <stdlib.h> #include <conio.h> main () { int max,n,k,i,a[100];   printf("\nЖиым ұзындығы:");scanf("%d",&n); printf(“Жиым элементтері:"); for(i=0;i<n;i++) {a[i] = rand()%100-50;//кездейсоқ сандар printf(" %i ",a[i]); } max=a[0];k=0; for (i=1;i<n; i++) if (a[i]>max) {max=a[i]; k=i;} printf("\nmax = %d индексі=%d\n",max,k+1); getch(); } ТурбоСи

Мысал: Бүтін сандардан тұратын А[15] массиві берілген Мысал: Бүтін сандардан тұратын А[15] массиві берілген. Массив оң элeменттерінің геометриялық ортасын анықтау керек. #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #define n 15 main () { int a[n],i;   randomize(); for(i=0;i<n;i++) {a[i]=random(100)-50;//кездейсоқ сандар 0-100 printf(" %i",a[i]);} //одан 50-дi алу //Элементтер санын,көбейтіндісін анықтау i=0; // бастапқы индекс = 0 float p=1; //оң элементтер көбейтіндісі int k=0; // оң элементтер саны

do { if (a[i]>0) { k++; p*=a[i];} i++; } while (i<n); printf("\nОң эл-ттер саны: %d\n",k); p=pow(p,1.0/k); printf(“Геометриялық ортасы = %f",p); getch();

Тыңдағандарыңызға рахмет!