6-лекция Турбо Си тілі элементтері.

Slides:



Advertisements
Similar presentations
Numerical Recipes The Art of Scientific Computing (with some applications in computational physics)
Advertisements

Recursive Descent Technique CMSC 331. UMBC 2 The Header /* This program matches the following A -> B { '|' B } B -> C { '&' C } C -> D { '^' D } D ->
Sort the given string, without using string handling functions.
Structure of a C program
If () else statement, switch statement, while () loop, do…while() loop and for( ; ; ) loop 1.
Lecture No: 16. The scanf() function In C programming language, the scanf() function is used to read information from standard input device (keyboard).
MAHENDRAN CHAPTER 6. Session Objectives Explain Type of Functions Discuss category of Functions Declaration & Prototypes Explain User Defined Functions.
C Tokens Identifiers Keywords Constants Operators Special symbols.
The switch StatementtMyn1 The switch Statement Sometimes there can be a multiple-choice situation, in which you need to execute a particular set of statements.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee C Language Part 2.
Dynamic Memory Allocation The process of allocating memory at run time is known as dynamic memory allocation. C does not Inherently have this facility,
PASSING VALUE TO A FUNCTION # CALL BY VALUECALL BY VALUE # CALL BY REFERENCECALL BY REFERENCE STORAGE CLASS # AUTOAUTO # EXTERNALEXTERNAL # STATICSTATIC.
Tutorial ICS431 – Introduction to C.
Dennis Ritchie 1972 AT & T Bell laboratories (American Telephone and Telegraph) USA 1www.gowreeswar.com.
 2007 Pearson Education, Inc. All rights reserved Random Number Generation  rand function – Load – Returns "random" number between
Dale Roberts CSCI 230 Functions Scope, Parameter Passing, Storage Specifiers Department of Computer and Information Science, School of Science, IUPUI Dale.
LESSON 4 Decision Control Structure. Decision Control Structures 1. if statement 2. if-else statement 3. If-else-if statement 4. nested if statement 5.
By Anand George SourceLens.org Copyright. All rights reserved. Content Owner - Meera R (meera at sourcelens.org)
LOOPING IN C. What would be the output of the following program main( ) { int j ; while ( j
Functions The fruitful & parameterized functions.
C syntax (simplified) BNF. Program ::= [ ] Directives ::= [ ] ::= | |… ::=#include > ::=#define.
Tutorial #4 Summer 2005.
Control Statements in C
Chapter 4 Function and Structure.
Recursion.
C Functions -Continue…-.
Advance Use of Structures
LESSON 4 Decision Control Structure
Decisions Chapter 4.
LESSON 3 IO, Variables and Operators
The Three Attributes of an Identifier
Command-Line Arguments
Recursion.
مبانی کامپیوتر و برنامه سازی
CMSC 104, Section 4 Richard Chang
Dynamic memory allocation and Intraprogram Communication
Reserved Words.
Ngôn ngữ lập trình C/C++
CHƯƠNG II CÁC HÀM NHẬP XUẤT
Scope, Parameter Passing, Storage Specifiers
CMSC 104, Section 4 Richard Chang
توابع ورودي-خروجي.
تعارف. تعارف قواعد العمل ا الموبيل المشروبات الاحاديث الجانبية الاسئلة نفكر.
null, true, and false are also reserved.
פרטים נוספים בסילבוס של הקורס
Variables in C Topics Naming Variables Declaring Variables
כתיבת מאקרו הפקודה assert מצביעים לפונקציות
פרטים נוספים בסילבוס של הקורס
Govt. Polytechnic,Dhangar
Recursion.
Variables in C Topics Naming Variables Declaring Variables
C Storage classes.
Govt. Polytechnic,Dhangar
Default Arguments.
Variables in C Declaring , Naming, and Using Variables.
CSC215 Homework Homework 03 Due date: Oct 07, 2016.
Relational, Logical, and Equality Operators
Programming Language C Language.
In C Programming Language
The Pointers of Structures
Character Arrays char string1[] = “first”;
Computer Security Password Policy.
Building Blocks of C Programming Language
Variables in C Topics Naming Variables Declaring Variables
Variables in C Topics Naming Variables Declaring Variables
Iteration Statement for
C Programming Lecture-17 Storage Classes
Storage Classes.
Variables in C Topics Naming Variables Declaring Variables
Control Structure គោលបំណងនៃមេរៀន អ្វីជា Control structure ?
Presentation transcript:

6-лекция Турбо Си тілі элементтері

Сұрақтар: Switch ауыстырғыш операторы ЭЕМ жадының кластары және айнымалылардың қолданылу аймағы 3. Cи тіліндегі функциялар

1. Switch ауыстырғыш операторы Оператордың жалпы жазылуы: switch <бүтін типті өрнек>; { case белгі1: операторлар; break; case белгі2: операторлар; break; ................ case белгіN: операторлар; break; [default: операторлар;] }

Оператордың орындалу схемасы: 1-белгі: <операторлар>; break; Өрнек? 2-белгі: 3-белгі: n-белгі: switch case

Мұнда switch сөзінен кейінгі өрнек мәні есептеледі, ол бүтін санды (char типі де) типте болуы тиіс. Сол мән case сөздерінен кейін жазылған константалар мәндерімен салыстырылады. Егер олардың біріне тең болса, сол жол орындалады, жол соңында көшу опера-торы болмаса, келесі жолдар толық орындалады. Ал бір жолды орындап болған соң, switch операторынан шығу үшін break операторы қолданылады. Егер switch сөзінен кейінгі өрнек мәні ешбір константа-мен сәйкес келмесе, онда default сөзінен кейінгі операторлар атқарылады. Кейде default сөзі болмауы да мүмкін.

Егер default сөзі болмаса, онда switch операторынан кейінгі келесі жолдар орындала береді. Нөмірлеріне сәйкес апта күндерінің атауларын шығару мысалы (switch2.cpp): 1 енгізілсе, дүйсенбі сөзі, 2 енгізілсе, сейсенбі сөзі, .......... 7 енгізілсе, жексенбі сөзі шығарылады.

#include <stdio.h> #include <conio.h> main() { int i; printf("\n1-7 арасында бүтін сан енгіз: " ); scanf("%i",&i); switch(i) { case 1: printf("\nдуйсенбі");break; case 2: printf("\nсейсенбі");break; case 3: printf("\nсарсенбі");break; case 4: printf("\nбейсенбі");break; case 5: printf("\nжұма");break; case 6: printf("\nсенбі");break; case 7: printf("\nжексенбі");break; default: printf(“Сан 1-7 арасында болуы керек"); } getch();

Көбейту кестесін шығару программасы (switch1.cpp): int i; printf("\n1-9 арасында бутін сан енгіз:" ); scanf("%i",&i); switch(i) { case 1: printf("\n%dx1=%d",i,1*i); case 2: printf("\n%dx2=%d",i,2*i); case 3: printf("\n%dx3=%d",i,3*i); case 4: printf("\n%dx4=%d",i,4*i); case 5: printf("\n%dx5=%d",i,5*i); case 6: printf("\n%dx6=%d",i,6*i); case 7: printf("\n%dx7=%d",i,7*i); case 8: printf("\n%dx8=%d",i,8*i); case 9: printf("\n%dx9=%d",i,9*i); default: printf(“Сан 1-9 арасында болуы тиіс"); }

Бұл программаның жұмыс нәтижесі: 1 енгізілгенде мыналар шығарылады: 1x1=1 1x2=2 1x3=3 … 1x9=9 2 енгізілгенде мыналар шығарылады: 2x2=4 2x3=6 2x9=18 9 енгізілгенде мыналар шығарылады: 9x9=81

Шығыс күнтізбесі бойынша жыл нөмірінің жануарлар атына сәйкестігін анықтау мысалы (tyshkan.cpp): { int god; printf(“Введите год: "); scanf("%i",&god); switch (god % 12) { case 0 : printf("год Обезьяны");break; case 1 : printf("год Петуха"); break; case 2 : printf("год Собаки"); break; case 3 : printf("год Свиньи"); break; case 4 : printf("год Крысы"); break; case 5 : printf("год Коровы"); break; case 6 : printf("год Тигра"); break; case 7 : printf("год Зайца"); break; case 8 : printf("год Дракона"); break; case 9 : printf("год Змеи"); break; case 10 : printf("год Лошади"); break; case 11 : printf("год Овцы"); break; default: printf("Введите целое без знака"); }

2. ЭЕМ жадының кластары және айнымалылардың қолданылу аймағы Айнымалылар типтерден бөлек жады кластары-мен де сипатталады. Осы уақытқа дейін кластарды көрсетпеуіміз олардың алдын ала келісім бойынша сипатталуына байланысты болды. Айнымалылар компьютер жадында немесе процессор регистрлері-нің бірінде сақталады. Ол үшін айнымалы кластары анықталады. ЭЕМ жадының класы (storage class) айнымалылар-дың қолданылу аймағын (жедел жады немесе регис-трлер) және осы айнымалының ЭЕМ жадында сақ-талу ұзақтығын анықтайды.

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

Әрбір айнымалы анықталған бір типке және жа-дының бір класына жатуы тиіс (жалпы ЭЕМ жад-ында не регистрлерде). Си тілінде ЭЕМ жадының 4 түрлі класы бар және оларды сипаттау үшін 4 түй-інді сөз қолданылады: · auto – автоматты класты сипаттау үшін қолданылады, · extern – сыртқы класты сипаттау үшін қолданылады, · static­ – статикалық класты сипаттау үшін қолданылады, · regisrter – регистрлік класты сипаттау үшін қолданылады.

Автоматтық айнымалылар функция ішінде сипат-талған айнымалылар, егер жады класының басқа ай-қын сипатталуы болмаса, онда олар auto класына жа-татын болып саналады, яғни келісім бойынша функ-цияның ішінде сипатталған айнымалы автоматтық айнымалы болып саналады. Кейбір жағдайларда бе-рілген айнымалылар тек осы функцияның ішінде ғана сипатталған болса және осында ғана қолданылса, олар auto түйінді сөзі арқылы айқын сипаттала алады. Мысалы: auto int m; auto int b=12345; auto float d=123.45; auto char c;

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

Сыртқы айнымалылар. Функцияның сыртында сипатталатын айнымалылар сыртқы болып табы-лады. Олар функция ішінде қайта қолданылатын бол-са, extern түйінді сөзі арқылы сол айнымалы қайта сипатталатын болады. Олардың әсер ету аймағы гло-бальді болып саналады. Мысалы: int t; main() {extern int t; scanf(“%d”,&t); while(t!=50) pr(); printf(“Поиск завершен\n”); } pr() printf(“ввод следующего числа\n”);

Егер pr()функциясында t айнымалысының сипат-талуы келтірілмесе де, t атты сыртқы айнымалы pr()функциясында келісім бойынша белгілі болып саналады. Егер main() және pr()функцияларында extern түйінді сөзі сол функциялар ішіндегі t ай-нымалысының сипатталуында келтірілмесе, онда t атты жаңа автоматты айнымалы пайда болады. Сонымен t атты сыртқы айнымалы бұл функциялар-да белгілі болмайды. Егер pr() функциясында t айнымалысының сипатталуында extern деген сөз жазылмаса, онда main()функциясында орналасқан t айнымалысы ешқашан жаңа мән қабылдай алмайды.

Статикалық айнымалылардың қолданылу аймағы локальді болады, ал оның автоматтық айнымалылардан өзгешелігі: егер осы айнымалыны сипаттаған функция өз жұмысын аяқтаса да, статикалық айнымалылар мәні жо-йылмайды. Функцияны бір шақырғаннан оны келесі ша-қырғанға дейін компилятор статикалық айнымалының бұрынғы мәндерін есте сақтайды. Мысалы: #include <stdio.h> int fun() { int av=1; static int stv=1; printf("av=%d stv=%d\n",av++,stv++); } main() { for(int k=1; k<=3; k++) { printf("%d-шы адым: ",k); fun(); } getch();

Бұл программаның жұмыс нәтижесі: 1-адым: av=1 stv=1 2-адым: av=1 stv=2 3-адым: av=1 stv=3 Регистрлік айнымалыларды register түйінді сөзі анықтайды. Әдетте программада сипаттала-тын айнымалылар ЭЕМ жадында сақталады,ал регистрлік айнымалылар процессордағы регистр-лерде сақталады. Осындай айнымалыларды пай-даланғанда, программаның жұмысы жылдамырақ орындалуы тиіс.

Жалпы жағдайда регистрлік айнымалылар автоматтық айнымалыға ұқсас Жалпы жағдайда регистрлік айнымалылар автоматтық айнымалыға ұқсас. Егер регистрлік айнымалы программада сипатталса, осы сәтте бір регистр бос болса, онда компилятор керекті мәнді осы регистрде сақтайды деп саналады. Ал егер келтірілген талапты орындауға мүмкіндік болмаса, онда регистрлік айнымалы автоматтық айнымалы ретінде пайдаланылады.

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

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

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

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

Оң бүтін санның факториалын анықтау функциясын былай жазуға болады: 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)! есептеу #include <conio.h> #include <stdio.h> float fak(int x) { float p=1; for (int j=1;j<=x;j++) p*=j; return (p); } main () { int m,n; float c; printf(“введите m,n : "); scanf("%d%d",&m,&n);

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

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